📜  Python中的无限迭代器(1)

📅  最后修改于: 2023-12-03 15:19:30.349000             🧑  作者: Mango

Python中的无限迭代器

在Python中,迭代器(Iterator)是一个非常有用的工具,它可以让我们遍历一个序列,而不用知道这个序列的长度。当然,Python中的迭代器不仅仅局限于迭代有限序列,还有一些特殊的无限迭代器。

itertools模块

Python中的itertools模块提供了一些非常有用的迭代器,包括一些无限迭代器,如下所示:

count()

count(start=0, step=1)

这个迭代器从指定的start开始,每次增加指定的step。如果没有给定start,则默认从0开始。示例代码如下:

import itertools

for i in itertools.count(1, 2):
    print(i)

这个程序会无限循环,输出从1开始,每次增加2的整数序列。

cycle()

cycle(iterable)

这个迭代器会无限重复给定的序列,例如:

import itertools

for i in itertools.cycle('abc'):
    print(i)

这个程序会无限循环,输出a、b、c、a、b、c……的序列。

repeat()

repeat(element, times=None)

这个迭代器会无限重复给定的元素,或者重复给定的元素指定的次数。例如:

import itertools

for i in itertools.repeat('hello', 3):
    print(i)

这个程序会输出3次'hello'。

自定义无限迭代器

除了itertools模块中提供的无限迭代器以外,我们还可以自己定义无限迭代器。只需要定义一个无限循环的生成器函数即可。例如,下面这个生成器函数会不断返回自增的整数:

def infinite_sequence():
    num = 0
    while True:
        yield num
        num += 1

这个生成器函数可以用来生成一个无限整数序列,例如:

for i in infinite_sequence():
    print(i)

这个程序会无限循环,输出从0开始的整数序列。

总结

Python中的无限迭代器可以用来生成一些特殊的序列,如整数序列、重复序列等。我们可以使用itertools模块中提供的无限迭代器,也可以自己定义无限迭代器。这些迭代器在处理一些特殊问题时非常有用。