[英]Print an infinite sequence using generator
我正在嘗試創建一個生成指定無限序列的生成器。 目前,我有以下代碼:
def numGen():
for i in range(1,13):
yield i
這給了我:
>>> y = numGen()
>>> y
<generator object numGen at 0x7f6b88d22570>
>>> y.__next__()
1
...
>>> y.__next__()
12
>>> y.__next__()
Traceback (most recent call last):
File "<stdin>", line 1, in <module> StopIteration
我不確定要重置它然后再打印出1、2、3,...,11、12、1、2、3,...時需要更改什么,我嘗試添加屈服線之后的行“ i + = 1”,但是它將打印出14,這不是我想要的。
只是循環。
y = itertools.cycle(numGen())
如果您使用的是Python 3.3或更高版本,則可以使用yield from
,它從iterable中產生連續的元素。 然后,您可以將其置於無限循環中-實際上,函數沒有無限的作用。
def numGen():
while 1:
yield from range(1,13)
完成生成從1到12的數字后,循環將重新開始該序列。
所示生成器的核心問題是它僅循環執行一次序列,然后停止。 一個簡單的更改是將其包裝在while True
外部,例如:
def numGenForever():
while True:
for i in range(1,13):
yield i
這將是“無限的”,因為它將在每個先前完成后重新開始序列迭代。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.