循环遍历列表:从第一个循环的第X项开始,经过完整列表

时间:2016-10-20 18:06:49

标签: python-3.x

我有一个属于我创建的类的对象列表:

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 ...

我对如何去做而感到茫然,并希望得到一些指示。感谢。

2 个答案:

答案 0 :(得分:2)

使用cycle

中的isliceitertools
for i in itertools.islice(itertools.cycle(my_list), start, stop):
    my_func(i.attribute)

在列表切片start

中处理stoprepeating_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(或者根本调用它)。