python 如何按照一定的顺序迭代?

ikfrs5lh  于 2023-05-27  发布在  Python
关注(0)|答案(2)|浏览(114)

我想知道如何在Python中以一定的顺序遍历列表。
给定列表lst = [1, 3, -1, 2],我希望我的函数迭代,使得迭代的下一个数字将是当前数字值的索引。
lst[0] -> lst[1] -> lst[3] -> lst[2] 1 -> 3 -> 2 -> -1

6ie5vjzr

6ie5vjzr1#

有几个变量您没有指定:
1.这应该包括哪种错误处理?
1.你想让它无限循环吗?
假设相应的答案是“无”和“是”,这里有一种方法:

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
lyr7nygr

lyr7nygr2#

假设您检查每个值都在列表中,除了必须有一个列表结束条件之外,那么您将有

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

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

相关问题