Python 用cycle()循环迭代

  • Post category:Python

下面是Python中使用cycle()循环迭代的完整攻略。

cycle()函数简介

在Python中,cycle()函数可以用来循环迭代一个序列,即无限重复一个序列中的元素。

cycle()函数来自Python标准库itertools模块。它需要一个可迭代对象作为参数,并返回一个无限次循环迭代该可迭代对象的迭代器。

cycle()函数使用方法

cycle()函数的基本使用方法如下:

from itertools import cycle

my_list = ["apple", "banana", "cherry"]
my_cycle = cycle(my_list)

for i in range(6):
    print(next(my_cycle))

上述代码中,首先导入了itertools模块中的cycle()函数。然后定义了一个列表my_list,它包含3个字符串元素。接着使用cycle()函数创建了一个迭代器my_cycle,它可以无限次地循环迭代my_list中的元素。最后,在一个for循环中使用了next()函数输出了my_cycle迭代器中的前6个元素。

输出结果如下所示:

apple
banana
cherry
apple
banana
cherry

在循环过程中,当my_cycle迭代器已经循环到最后一个元素时,它会从头开始循环迭代原序列中的元素。

cycle()函数应用示例

下面对cycle()函数的应用进行两个示例说明:

  1. 使用cycle()函数生成不同风格的表格行
from itertools import cycle

row_odd = cycle(["#EEE", "#DDD"])
row_even = cycle(["#FFF", "#EEE"])

table_html = "<table>\n"
for i in range(10):
    table_html += f"<tr style='background-color: {next(row_odd)}'><td>Row {i+1}</td></tr>\n"
    table_html += f"<tr style='background-color: {next(row_even)}'><td>Row {i+2}</td></tr>\n"
table_html += "</table>"

print(table_html)

上述代码中,首先导入了itertools模块中的cycle()函数。然后使用两个cycle()函数创建了row_oddrow_even两个迭代器,它们分别可以循环迭代包含不同颜色值的列表。接着使用一个for循环,按照奇偶次序循环生成html中的表格行。最后,将生成的html代码输出。

输出结果如下所示:

<table>
<tr style='background-color: #EEE'><td>Row 1</td></tr>
<tr style='background-color: #FFF'><td>Row 2</td></tr>
<tr style='background-color: #DDD'><td>Row 3</td></tr>
<tr style='background-color: #EEE'><td>Row 4</td></tr>
<tr style='background-color: #FFF'><td>Row 5</td></tr>
<tr style='background-color: #DDD'><td>Row 6</td></tr>
<tr style='background-color: #EEE'><td>Row 7</td></tr>
<tr style='background-color: #FFF'><td>Row 8</td></tr>
<tr style='background-color: #DDD'><td>Row 9</td></tr>
<tr style='background-color: #EEE'><td>Row 10</td></tr>
<tr style='background-color: #FFF'><td>Row 11</td></tr>
</table>

在上述代码中,使用cycle()函数可以方便地循环迭代闪烁的背景色值。

  1. 使用cycle()函数生成乐曲的音符序列
from itertools import cycle
import time

note_list = ["C", "E", "G", "A", "B", "D", "F", "C", "G", "A", "B", "F", "C", "E", "D", "G", "A", "B", "F", "C", "E", "D", "F", "C", "G", "B"]

note_cycle = cycle(note_list)

for i in range(30):
    print(next(note_cycle))
    time.sleep(0.2)

上述代码中,首先导入了itertools模块中的cycle()函数和Python标准库time模块。然后定义了一个包含24个音符元素的列表note_list,表示某个乐曲的音符序列。接着使用cycle()函数将note_list转换成一个循环迭代器note_cycle。接着使用一个for循环,按照次序输出note_cycle迭代器中的前30个音符。在输出一个音符后,程序使用time.sleep()函数暂停0.2秒,以便将音符输出音频设备并播放该音符。

输出结果如下所示:

C
E
G
A
B
D
F
C
G
A
B
F
C
E
D
G
A
B
F
C
E
D
F
C
G
B
C
E
G

在上述代码中,使用cycle()函数可以方便地循环迭代一个乐曲的音符序列,从而实现音符的连续播放。