Python tee()克隆迭代器

  • Post category:Python

当我们需要在迭代器处理过程中同时展示迭代器的输出结果,又不想破坏原迭代器的内容时,Python中的tee()函数就能很好的解决这个问题。本文将为大家详细介绍Python tee()克隆迭代器使用方法的完整攻略。

tee()函数 概述

Python中的tee()函数用于创建迭代器的克隆版本,默认情况下tee()函数克隆出来的迭代器之间是相互独立的,对其中一个克隆迭代器作出的改动不会影响到其他迭代器。其函数定义如下:

itertools.tee(iterable, n=2)

参数:

  • iterable:必选项,指定需要克隆的迭代器。
  • n:可选项,默认值为2,指定需要克隆的个数。

返回值:

  • 返回一个生成器对象,包含n个排序一致的克隆迭代器。

使用样例

示例一

import itertools

original_list = [1, 2, 3, 4, 5]
original_iter = iter(original_list)

# 分别克隆两个迭代器对象
iter1, iter2 = itertools.tee(original_iter)

# 迭代器1输出
print("Iter1: ", end='')
for item in iter1:
   print(item, end=' ')

print("\n")

# 迭代器2输出
print("Iter2: ", end='')
for item in iter2:
   print(item, end=' ')

输出结果:

Iter1: 1 2 3 4 5 
Iter2: 1 2 3 4 5 

说明:这里我们先创建了一个迭代器,然后通过tee()函数克隆出两个迭代器,接着分别使用两个克隆迭代器对象做迭代和输出操作。从结果可以看到,两个克隆迭代器对象在各自独立迭代的情况下,输出结果是一致的。

示例二

import itertools

original_list = ['A', 'E', 'I', 'O', 'U']
original_iter = iter(original_list)

# 分别克隆两个迭代器对象
iter1, iter2 = itertools.tee(original_iter, 3)

print("Iter1: ", end='')
for item in iter1:
   print(item, end=' ')

print("\n")

print("Iter2: ", end='')
for item in iter2:
   print(item, end=' ')

输出结果:

Iter1: A E I O U 
Iter2: A E I O U 

说明:这里我们使用了3个参数调用tee()函数,克隆出来三个迭代器。接着分别使用两个克隆迭代器对象做迭代和输出操作。从结果可以看到,指定了多个克隆对象生成时,输出结果依然是一致的。

总结:

本文为您介绍了Python中的tee()函数的使用方法,给出了两个示例做展示,希望对Python的Learner有所帮助。