2013-01-06 40 views
1

只是說我有在Python中的一個整數,例如:100有沒有辦法將整數轉換爲向上計數的整數列表?

我想這個整數轉換成一個列表數到這個整數,例如:[1,2,3,... 100]

什麼是最有效的方法來做到這一點? (如果你想知道爲什麼要這樣做,這是因爲我想使用的Django Paginate庫需要一個列表 - 如果有更好的方法來使用Paginate而不這樣做,請讓我知道)。

回答

7

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

range(1, 101) 

注意,從0range()數量的下降,是在計算機科學正常的,所以我們需要通過1,並且它計數,直到給定值,不包括 - 因此101這裏數到100。因此,一般來說,您需要range(1, n+1)1n

另請注意,在3.x中,這會產生一個迭代器,而不是一個列表,所以如果您需要一個列表,那麼您可以簡單地將list()包裝在range()的呼叫周圍。這就是說 - 大多數情況下,可以使用迭代器而不是列表(這有很大的優勢,因爲迭代器可以被懶惰地計算),在這種情況下,不需要創建一個列表(在2.x中,功能像的範圍在3.X可以與xrange()實現。

1

可以使用範圍或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] 
+0

爲什麼使用'xrange()'來重新創建一個列表? –

+0

僅作爲示例顯示。也許一個更好的例子是「對於xrange(1,101)」。 – Daniel

+0

@Lattyware至少在我的機器上,使用'timeit'模塊,'list(xrange(1,101))'比'list(range(1,101))'更快' –

相關問題