有没有办法将整数转换为向上计数的整数列表?

时间:2013-01-06 02:24:36

标签: python django django-pagination

说我在Python中有一个整数,例如:100。

我想把这个整数转换成一个数到这个整数的列表,例如:[1,2,3,... 100]

最有效的方法是什么?

(如果您想知道我为什么要这样做,那是因为我想使用的Django Paginate库需要一个列表 - 如果有更优雅的方式使用Paginate而不这样做,请告诉我)

3 个答案:

答案 0 :(得分:7)

Python range() built-in完全符合您的要求。 E.g:

range(1, 101)

请注意,range()计算来自0,这在计算机科学中是正常的,因此我们需要传递1,并且它会计算到给定值,不包括 - 因此{{ 1}}此处计为101。一般来说,您希望100range(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]