itertools.cycle(iterable)の警告に興味があります:
iterable から要素を返すイテレータを作成し、それぞれのコピーを保存します。iterable が使い果たされると、保存されたコピーから要素を返します。無期限に繰り返します。
に相当:
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
エントリには、「注、ツールキットのこのメンバーは、(イテラブルの長さに応じて) かなりの補助ストレージを必要とする場合があります」という警告も含まれています。
次のようにして、追加のストレージ要件 (および多少の複雑さ) を回避できませんでしたか?
def cycle(iterable):
while True:
for i in iterable:
yield i
中古品を保管するメリットはsaved
?