我是python的新手,想要一個產生包含大量整數的列表的函數,例如[1,3,5,7 ....]就像你可以做的那樣範圍函數即範圍(1,21,2)。定義序列的長度而不是步長
然而,不是設置上限我想設置列表應該是多長時間,所以我會說明我想要在列表中的起始點,步驟和整數的數量。這樣的功能是否存在?
我是python的新手,想要一個產生包含大量整數的列表的函數,例如[1,3,5,7 ....]就像你可以做的那樣範圍函數即範圍(1,21,2)。定義序列的長度而不是步長
然而,不是設置上限我想設置列表應該是多長時間,所以我會說明我想要在列表中的起始點,步驟和整數的數量。這樣的功能是否存在?
沒有,但它很容易使一個:
def myrange(start, step, count):
return range(start, start + (step * count), step)
簡短演示:
>>> myrange(10, 2, 5)
[10, 12, 14, 16, 18]
>>> myrange(10, -2, 5)
[10, 8, 6, 4, 2]
在Python 3,它會返回一個range
對象,就像普通range()
功能將:
>>> myrange(10, 2, 5)
range(10, 20, 2)
>>> list(myrange(10, 2, 5))
[10, 12, 14, 16, 18]
Martijn Pieter的答案適用於整數。如果start
或step
可能是花車,你可以使用一個list comprehension:
[start+i*step for i in range(count)]
+1。但是,也許一個發電機會更好:'(開始+我*爲範圍(計數)的步驟)',因爲範圍也是一個發電機(至少在3)。 – Hyperboreus
@Hyperboreus:我認爲「更好」取決於情況。如果你有足夠的內存,列表理解可能會更快(假設你需要使用整個列表)。但是如果你對記憶很緊張,那麼發電機就更好了。 – unutbu