说我在Python中有一个整数,例如:100。
我想把这个整数转换成一个数到这个整数的列表,例如:[1,2,3,... 100]
最有效的方法是什么?
(如果您想知道我为什么要这样做,那是因为我想使用的Django Paginate库需要一个列表 - 如果有更优雅的方式使用Paginate而不这样做,请告诉我)
答案 0 :(得分:7)
Python range()
built-in完全符合您的要求。 E.g:
range(1, 101)
请注意,range()
计算来自0
,这在计算机科学中是正常的,因此我们需要传递1
,并且它会计算到给定值,不包括 - 因此{{ 1}}此处计为101
。一般来说,您希望100
从range(1, n+1)
计算到1
。
另请注意,在3.x中,这会生成迭代器,而不是列表,因此如果您需要列表,则只需将n
包裹在list()
的调用周围。也就是说 - 大部分时间都可以使用迭代器而不是列表(它具有很大的优势,因为迭代器可以懒惰地计算),在这种情况下,不需要创建列表(在2.x中,功能可以使用xrange()
来实现3.x范围内的范围。
答案 1 :(得分:3)
Lattyware提供的解决方案对于生成列表是正确的,但如果您使用Django分页,则可以使用paginator_instance.page_range
https://docs.djangoproject.com/en/dev/topics/pagination/#django.core.paginator.Paginator.page_range
答案 2 :(得分:1)
您可以使用范围或xrange。 xrange更快,但返回一个迭代器。
>>>range(1,101)
[1, 2, 3, ... , 99, 100]
>>> xrange(1,101)
xrange(1, 101)
>>>list(xrange(1,101))
[1, 2, 3, ... , 99, 100]