【发布时间】:2020-05-11 21:15:42
【问题描述】:
我刚刚了解到itertools.tee() 可用于制作给定迭代器的任意数量的副本。
所以我正在尝试创建两个 groupby 副本并遍历每个副本。但是,第二个迭代器不返回任何组。
import itertools
l = [("a", 1), ("a", 2), ("b", 3), ("b", 4)]
groups = itertools.groupby(l, lambda x: x[0])
groups1, groups2 = itertools.tee(groups, 2)
for key, group in groups1:
print(key + ": " + str(list(group)))
for key, group in groups2:
print(key + ": " + str(list(group)))
另外,我在文档中发现了这一点,我无法完全理解 tee() 何时不比 list() 快
这个 itertool 可能需要大量的辅助存储(取决于 需要存储多少临时数据)。一般来说,如果一个 迭代器在另一个迭代器启动之前使用大部分或全部数据, 使用 list() 而不是 tee() 更快。
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
不确定是否解释,但相关:stackoverflow.com/questions/35991852/…