我想知道如何在Python中按特定顺序迭代列表。
给定列表lst = [1, 3, -1, 2]
,我希望我的函数迭代,以便迭代的下一个数字将是当前数字值的索引。
lst [0] - > lst [1] - > [3] - > LST [2] 1 - > 3 - > 2 - > -1
答案 0 :(得分: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
请注意,如果列表中的每个条目都是有效索引,那么您将获得无限循环。