【发布时间】:2011-12-12 13:43:04
【问题描述】:
我正在努力改进我的文档。我想说这个函数接受的是一个 collections.Iterable 的东西,但是代码会多次迭代这个 iterable。 “列表”过于具体,“可迭代”不起作用,因为某些可迭代对象只能迭代一次。
事物有名字吗? “可重复”?可多次迭代?
【问题讨论】:
-
没有回答你的问题,但我建议你可以在你的代码中使用 itertools.tee - 这样它就可以接受任何可迭代的东西。
-
@jsbueno:不过,这会在传递序列时引入冗余副本。
-
@SvenMarnach:实际上,“tee”只是做“正确的事”——它只会有序列值的“多个副本”,这些序列值使用过一次,但不是一直使用。这个问题必须是一个资源非常关键的问题,这种缓存才能成为一个问题。如果是这样,如果传入了一个序列,则不使用
tee将是一个if的问题。 -
@jsbueno: 为什么当一个序列被传递给它时,tee 不能自动做正确的事情?
标签: python