如何按特定顺序迭代?

时间:2016-10-10 21:02:33

标签: python loops for-loop iteration next

我想知道如何在Python中按特定顺序迭代列表。

给定列表lst = [1, 3, -1, 2],我希望我的函数迭代,以便迭代的下一个数字将是当前数字值的索引。

lst [0] - > lst [1] - > [3] - > LST [2] 1 - > 3 - > 2 - > -1

2 个答案:

答案 0 :(得分:3)

您有一些未指定的变量:

  1. 这包括哪种错误处理?
  2. 你想让它无限循环吗?
  3. 假设各自的答案是“无”和“是”,这是一种方法:

    def create_iter(arr):
        i = 0
        while True:
            yield arr[i]
            i = arr[i]
    
    lst = [1,3,-1,2]
    my_iterator = create_iter(lst)
    

    这给出了:

    >>> for _ in range(10):
    >>>    print (next(my_iterator))
    1
    3
    2
    -1
    2
    -1
    2
    -1
    2
    -1
    

答案 1 :(得分:0)

鉴于您检查每个值是否在列表中,除了您必须具有列表结束条件,那么您将拥有

index = 0
while True:
    newindex = mylist[index]
    if newindex >= len(mylist):
        break
    elif newindex == index:
         break
     else:
         index = newindex

请注意,如果列表中的每个条目都是有效索引,那么您将获得无限循环。