我将如何转换成对(元组)的生成器:tuple_gen=(iforiin[(1,"a"),(2,"b"),(3,"c")])分成两个生成器,生成[1,2,3]和["a","b","c"]?我需要分别处理元组的第一个和第二个元素,并且处理函数需要一个可迭代对象。生成器非常大(数百万个项目),所以我想避免将所有项目同时存入内存,除非没有其他解决方案。 最佳答案 您可以使用tee创建n个不同的迭代器来自itertools包的函数。然后您将分别迭代它们:fromitertoolsimporteei1,i2=tee(tuple_gen,n=2)
假设我有一个如下所示的生成器函数:deffib():x,y=1,1whileTrue:x,y=y,x+yyieldx理想情况下,我可以只使用fib()[10]或fib()[2:12:2]来获取索引和切片,但目前我有为这些事情使用itertools。我不能使用生成器来替换列表。我相信解决方案是将fib()包装在一个类中:classIndexable(object):....fib_seq=Indexable(fib())Indexable应该是什么样子才能完成这项工作? 最佳答案 importitertoolsclassIndexab