1

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

我想将此整数转换为计数到此整数的列表,例如:[1,2,3,... 100]

最有效的方法是什么?

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

4

3 回答 3

7

range()内置的 Python完全符合您的要求。例如:

range(1, 101)

请注意,range()从 开始计数0,这在计算机科学中是正常的,所以我们需要通过1,并且它一直计数到给定值,不包括 - 因此101这里计数到100。所以一般来说,你想range(1, n+1)从 数1n

另请注意,在 3.x 中,这会生成一个迭代器,而不是一个列表,因此如果您需要一个列表,那么您可以简单地list()将对range(). 也就是说 - 大多数时候可以使用迭代器而不是列表(它有很大的优势,因为迭代器可以延迟计算),在这种情况下,不需要创建列表(在 2.x 中,功能像 3.x 中的范围一样,可以使用xrange().

于 2013-01-06T02:25:24.333 回答
3

Lattyware 给出的解决方案对于生成列表是正确的,但是如果您使用 Django 分页,您可以使用paginator_instance.page_range

https://docs.djangoproject.com/en/dev/topics/pagination/#django.core.paginator.Paginator.page_range

于 2013-01-06T03:07:31.740 回答
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]
于 2013-01-06T02:25:38.980 回答