我很好奇itertools.cycle(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
?