簡體   English   中英

使用生成器打印無限序列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM