Pythonのitertools.cycleのドキュメントは、()のような擬似コード実装与える:以下なぜPythonのitertools.cycleはイテレートのコピーを作成する必要がありますか?
def cycle(iterable):
# cycle('ABCD') --> A B C D A B C D A B C D ...
saved = []
for element in iterable:
yield element
saved.append(element)
while saved:
for element in saved:
yield element
を、それが状態:「ノート、ツールキットのこのメンバが重要補助記憶装置を必要とするかもしれない(の長さに応じてiterable)。 "
def loop(iterable):
it = iterable.__iter__()
while True:
try:
yield it.next()
except StopIteration:
it = iterable.__iter__()
yield it.next()
x = {1, 2, 3}
hard_limit = 6
for i in loop(x):
if hard_limit <= 0:
break
print i
hard_limit -= 1
プリント:
1
2
3
1
2
3
はい、私は私の実装を実現し、私はこれをしなかった以外
私は基本的に反復可能なのコピーを作成する必要はない、この道を行っていましたstrのためにはうまくいかないかもしれませんが、それはできます。なぜ別のコピーが作成されるのか、もっと興味があります。私はガベージコレクションと関係があると感じていますが、Pythonのこの分野ではよく研究されていません。
ありがとうございます!
@Martijn構文ハイライトをどのように追加しましたか?私はそれをする方法を理解できませんでした... – stantonk
私はしませんでした。私は 'python'タグを追加し、ハイライトが自動的に適用されます。しかし、タグがなくても、強調表示はしばしば正確に推測されます。 –
ああ、python2.7タグはありませんか?奇妙な... – stantonk