只是說我有在Python中的一個整數,例如:100有沒有辦法將整數轉換爲向上計數的整數列表?
我想這個整數轉換成一個列表數到這個整數,例如:[1,2,3,... 100]
什麼是最有效的方法來做到這一點? (如果你想知道爲什麼要這樣做,這是因爲我想使用的Django Paginate庫需要一個列表 - 如果有更好的方法來使用Paginate而不這樣做,請讓我知道)。
只是說我有在Python中的一個整數,例如:100有沒有辦法將整數轉換爲向上計數的整數列表?
我想這個整數轉換成一個列表數到這個整數,例如:[1,2,3,... 100]
什麼是最有效的方法來做到這一點? (如果你想知道爲什麼要這樣做,這是因爲我想使用的Django Paginate庫需要一個列表 - 如果有更好的方法來使用Paginate而不這樣做,請讓我知道)。
Python range()
built-in完全符合你的要求。 E.g:
range(1, 101)
注意,從0
range()
數量的下降,是在計算機科學正常的,所以我們需要通過1
,並且它計數,直到給定值,不包括 - 因此101
這裏數到100
。因此,一般來說,您需要range(1, n+1)
從1
到n
。
另請注意,在3.x中,這會產生一個迭代器,而不是一個列表,所以如果您需要一個列表,那麼您可以簡單地將list()
包裝在range()
的呼叫周圍。這就是說 - 大多數情況下,可以使用迭代器而不是列表(這有很大的優勢,因爲迭代器可以被懶惰地計算),在這種情況下,不需要創建一個列表(在2.x中,功能像的範圍在3.X可以與xrange()
實現。
可以使用範圍或x範圍。x範圍是速度快,但返回迭代器。
>>>range(1,101)
[1, 2, 3, ... , 99, 100]
>>> xrange(1,101)
xrange(1, 101)
>>>list(xrange(1,101))
[1, 2, 3, ... , 99, 100]
通過Lattyware給出的解決方案是用於生成正確該列表,但如果您使用Django分頁,您可以使用paginator_instance.page_range
https://docs.djangoproject.com/en/dev/topics/pagination/#django.core.paginator.Paginator.page_range
爲什麼使用'xrange()'來重新創建一個列表? –
僅作爲示例顯示。也許一個更好的例子是「對於xrange(1,101)」。 – Daniel
@Lattyware至少在我的機器上,使用'timeit'模塊,'list(xrange(1,101))'比'list(range(1,101))'更快' –