我有一个属于我创建的类的对象列表:
my_list = [item_1, item_2, item_3]
每个项目都有一个属性.attribute
。
我有一个循环,其中列表中的项目被迭代并用于调用函数以及属性,如下所示:
while True:
for i in range(3):
my_function(my_list[i].attribute)
我的问题:我希望能够选择迭代开始的item
my_list
,但随着循环的继续,我希望下一次迭代从{{1}开始}。换句话说,我希望循环可以这样:
my_list
或:
item_2 -> item_3 -> item_1 -> item_2 -> item_3 -> item_1 ....
与标准行为相反:
item_3 -> item_1 -> item_2 -> item_3 -> item_1 ...
我对如何去做而感到茫然,并希望得到一些指示。感谢。
答案 0 :(得分:2)
使用cycle
islice
和itertools
for i in itertools.islice(itertools.cycle(my_list), start, stop):
my_func(i.attribute)
在列表切片start
stop
和repeating_list[start:stop]
之类的索引
答案 1 :(得分:1)
也许我只是误解了这个问题,但你可以简单地将第一次调用放在for循环之外的my_function
,然后在内部继续正常。
my_function(my_list[3].attribute)
for i in range(3):
my_function(my_list[i].attribute)
然后,您可以使用条件来确定在for循环之外调用哪个item
(或者根本调用它)。