有没有一种方法可以循环遍历python中for循环中的列表



我有一个Python程序,它从一个名为";UserColorIndex"-我希望程序打印那些颜色,这取决于变量"的数值;圆圈数"因此,如果NumberOfCircles的值中有100,则程序应该从列表中打印出这些颜色100次,如果索引只有9种颜色,则程序应循环使用这些颜色并重复使用这些颜色以打印它们。我尝试使用enumerate方法,但这只是创建了一个不同的数据类型。我该如何修复/执行此操作?

这是我的代码:

NumberOfCircles = 18    # I don't know, just some random number, the program should work regardless of which number is placed 
def GenerateRosette():
for i in range(NumberOfCircles):
print(UserColorIndex[i])
UserColorIndex = ["Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet", "Black", "Grey"]
GenerateRosette()
Output:
________________
Red
Orange
Yellow
Green
Blue
Indigo
Violet
Black
Grey
Traceback (most recent call last):
File "file.py", line 9, in <module>
GenerateRosette()
File "file.py", line 5, in GenerateRosette
print(UserColorIndex[i])
IndexError: list index out of range
EXPECTED Output (What I want):
________________
Red
Orange
Yellow
Green
Blue
Indigo
Violet
Black
Grey
Red
Orange
Yellow
Green
Blue
Indigo
Violet
Black
Grey

在预期输出中,我希望根据for循环的运行次数(NumberOfCircles(打印列表。我想让它在列表中循环。我该怎么做

简单的方法是使用itertools.cycle:

import itertools
UserColorIndex = ["Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet", "Black", 
"Grey"]
def GenerateRosette(n):
color = itertools.cycle(UserColorIndex)
for _ in range(n):
print(next(color))
NumberOfCircles = 16
GenerateRosette(NumberOfCircles)

我发现@Tim的原始解决方案很优雅,@Juanpa建议的增强方案很有洞察力。将两者结合在一起会产生以下片段,该片段看起来非常"有趣";Pythonic";对我来说:

import itertools
UserColorIndex = ["Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet", "Black", 
"Grey"]
def GenerateRosette(n):
for color in itertools.islice(itertools.cycle(UserColorIndex), n):
print(color)
NumberOfCircles = 16
GenerateRosette(NumberOfCircles)

最新更新