用法:
itertools.tee(iterable, n=2)
从单个可迭代对象返回
n
独立迭代器。以下 Python 代码有助于解释
tee
确实(虽然实际的实现更复杂并且只使用一个底层FIFO队列)。大致相当于:
def tee(iterable, n=2): it = iter(iterable) deques = [collections.deque() for i in range(n)] def gen(mydeque): while True: if not mydeque: # when the local deque is empty try: newval = next(it) # fetch a new value and except StopIteration: return for d in deques: # load it to all the deques d.append(newval) yield mydeque.popleft() return tuple(gen(d) for d in deques)
一旦
tee()
进行了拆分,原来的iterable
不应在其他任何地方使用;否则,iterable
可以在不通知 tee 对象的情况下前进。tee
迭代器不是线程安全的。 ARuntimeError
可能会在同时使用由同一tee()
调用返回的迭代器时引发,即使原始iterable
是线程安全的。此迭代工具可能需要大量辅助存储(取决于需要存储多少临时数据)。通常,如果一个迭代器在另一个迭代器启动之前使用了大部分或全部数据,则使用
list()
而不是tee()
会更快。
相关用法
- Python itertools.takewhile用法及代码示例
- Python itertools.compress用法及代码示例
- Python itertools.dropwhile用法及代码示例
- Python itertools.repeat用法及代码示例
- Python itertools.combinations_with_replacement用法及代码示例
- Python itertools.groupby()用法及代码示例
- Python itertools.repeat()用法及代码示例
- Python itertools.count用法及代码示例
- Python itertools.starmap用法及代码示例
- Python itertools.filterfalse用法及代码示例
- Python itertools.chain.from_iterable用法及代码示例
- Python itertools.groupby用法及代码示例
- Python itertools.zip_longest用法及代码示例
- Python itertools.accumulate用法及代码示例
- Python itertools.combinations用法及代码示例
- Python itertools.permutations用法及代码示例
- Python itertools.product用法及代码示例
- Python itertools.chain用法及代码示例
- Python itertools.cycle用法及代码示例
- Python itertools.islice用法及代码示例
注:本文由纯净天空筛选整理自python.org大神的英文原创作品 itertools.tee。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。