通常,修改循环遍历的列表被认为是错误的形式,但是我还没有找到解决该问题的Python方法。问题的症结在于,我必须开始循环并执行一些操作,然后才能知道列表的长度。我可以放心地假设此列表中至少有一项,但这就是我所要做的,直到我迈出第一步。
用于某些其他上下文::我正在使用pyautogui。我的脚本单击一个按钮,然后显示多个选项,选项的数量决定了我需要再次单击该按钮的次数
最接近我的例子:
x=[1] #initial
y=[2,3,4,5] #stand in for unknown number of loops to make
for i in x:
if i==1: #check some criteria to determine number of loops
x.extend(y) #correct number of loops
print(i) #do some stuff
有人对这种“热交换”列表的pythonic方法有任何想法吗?
答案 0 :(得分:3)
无论何时要求列表迭代器提供下一个值(可能使用next()
,for
或其他机制),它都会检查它是否已到达末尾并应提高StopIteration
。迭代基于列表的索引,无论列表已被重新排序多少,它都会获取下一个索引值。这意味着,即使您要迭代列表中的最后一个值并添加更多值,迭代也将继续,因为您尚未达到超出列表范围的索引。
这就是您想要的。 for
将被迭代一次,但是在返回下一个迭代之前,将添加更多的值,并且将迭代这些值。这就是您的打印对帐单显示的内容
1
2
3
4
5
您不需要预先知道要添加多少个值。列表中下一个索引位置中的任何内容都会继续该列表。
很好,伙计。