迭代器定义为对象类型,其中包含可以使用循环访问或迭代的值。 内置与Python一起提供了不同的迭代器,例如列表,集合等。Itertools是Python模块,其中包含一些用于使用迭代器生成序列的内置函数。该模块提供了在迭代器上工作以生成复杂迭代器的各种函数。该模块可作为一种快速的内存有效工具,可单独使用或组合使用以形成迭代器代数。
有不同类型的迭代器
- 无限迭代器:
- 短序列迭代器:
- 组合发电机的函数:
Itertools.cycle()
- 函数仅接受一个参数作为输入,可以像列表,字符串,元组等
- 该函数返回迭代器对象类型
- 在函数的实现中,返回类型为yield,它在不破坏局部变量的情况下挂起函数执行。由生成中间结果的生成器使用
- 它遍历输入自变量中的每个元素并产生它并重复循环,并产生一个无穷大的自变量序列
下面提到的Python程序说明了循环函数的函数。它以字符串类型作为参数并产生无限序列。
import itertools
# String for sequence generation
Inputstring ="Geeks"
# Calling the function Cycle from
# itertools and passing string as
#an argument and the function returns
# the iterator object
StringBuffer = itertools.cycle(Inputstring)
SequenceRepeation = 0
SequenceStart = 0
SequenceEnd = len(Inputstring)
for output in StringBuffer:
if(SequenceStart == 0):
print("Sequence % d"%(SequenceRepeation + 1))
# Cycle function iterates through each
# element and produces the sequence
# and repeats it the sequence
print(output, end =" ")
# Checks the End of the Sequence according
# to the give input argument
if(SequenceStart == SequenceEnd-1):
if(SequenceRepeation>= 2):
break
else:
SequenceRepeation+= 1
SequenceStart = 0
print("\n")
else:
SequenceStart+= 1
输出:
Sequence 1 G e e k s Sequence 2 G e e k s Sequence 3 G e e k s
itertools.cycle函数还可以与Python列表一起使用。下面提到的Python程序说明了该函数。它以Python列表作为参数并产生无限序列。
import itertools
# List for sequence generation
Inputlist = [1, 2, 3]
# Calling the function Cycle from
# itertools and passing list as
# an argument and the function
# returns the iterator object
ListBuffer = itertools.cycle(Inputlist)
SequenceRepeation = 0
SequenceStart = 0
SequenceEnd = len(Inputlist)
for output in ListBuffer:
if(SequenceStart == 0):
print("Sequence % d"%(SequenceRepeation + 1))
# Cycle function iterates through
# each element and produces the
# sequence and repeats it the sequence
print(output, end =" ")
# Checks the End of the Sequence according
# to the give input argument
if(SequenceStart == SequenceEnd-1):
if(SequenceRepeation>= 2):
break
else:
SequenceRepeation+= 1
SequenceStart = 0
print("\n")
else:
SequenceStart+= 1
输出:
Sequence 1 1 2 3 Sequence 2 1 2 3 Sequence 3 1 2 3
注:本文由纯净天空筛选整理自Yelleti_Varshith大神的英文原创作品 Python – Itertools.cycle()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。