Python 中的 tee()
方法可以用于克隆一个迭代器并且不影响原来的迭代器。它会返回一个元组,其中每个元素都是新克隆出来的迭代器对象。使用 tee()
方法比直接复制迭代器的效率更高,因为它只需要遍历原来的迭代器一次。
下面是 tee()
方法的使用方法和示例说明:
使用方法
tee()
方法位于 Python 标准库的 itertools
模块中,使用前需要先导入模块:
import itertools
tee()
方法的基本语法如下:
itertools.tee(iterable, n=2)
其中,iterable
参数是要被克隆的迭代器对象,n
参数是指要克隆的迭代器数目,默认为 2。
示例说明
接下来我们演示两个示例,来展示如何使用 tee()
方法。
示例一
示例一中,我们将对一个列表进行遍历,并将它克隆成两个迭代器。然后我们使用第一个迭代器进行遍历,并将元素依次输出,然后再使用第二个迭代器遍历同样的列表,输出结果和第一个迭代器一样。
import itertools
my_list = [1, 2, 3, 4, 5]
iter1, iter2 = itertools.tee(my_list)
# 遍历第一个迭代器并输出元素
for i in iter1:
print(i)
# 遍历第二个迭代器并输出元素
for j in iter2:
print(j)
输出结果如下:
1
2
3
4
5
1
2
3
4
5
示例二
示例二中,我们将使用 itertools.count()
生成一个无限迭代器,并将它克隆成三个迭代器。然后我们使用第一个迭代器进行遍历,并只输出前 10 个元素。再使用第二个迭代器遍历同样的序列,直到第 20 个元素。最后使用第三个迭代器遍历同样的序列,输出剩下的所有元素。
import itertools
iter1, iter2, iter3 = itertools.tee(itertools.count())
# 遍历第一个迭代器,输出前 10 个元素
for i, n in enumerate(iter1):
if i == 10:
break
print(n)
# 遍历第二个迭代器,输出第 11 到 20 个元素
for i, n in enumerate(iter2):
if i == 10:
break
for i, n in enumerate(iter2):
if i == 10:
break
print(n)
# 遍历第三个迭代器,输出剩下的元素
for n in iter3:
print(n)
输出结果如下:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
...