基于列表中找到的元素,我想更新for循环中的索引值。我相信我已经做到了,但是我的Python脚本似乎没有输出正确的值,而且我不知道为什么:
我的清单如下所示:
dataXY = [['6', 'c', '3', '7', '2', '9', '1', '7'],['8', '4', 'c', '7', '9', '3', '4', '7', '1', '2']]
我对此起作用的代码是:
for lists in dataXY:
XYbezier = []
final_lists = []
for datum in range(len(lists)):
if lists[datum] == 'c':
for k in range(-1,4):
if k != 0:
XYbezier.append(lists[datum+k])
else:
if lists[datum-1] == 'c':
datum += 3
if datum != len(lists):
final_lists.append(lists[datum])
else:
final_lists.append(lists[datum])
print datum
它的打印内容是这样的:
1个
5
3
4
5
6
7
0
1个
2
6
4
5
6
7
8
9
由于某种原因,索引值被重置,但随后又被还原(从索引值从1跳到5然后又回到3)的方式,我不明白为什么这样做,我需要索引值跳3个位置并永久更新,而不是将自身恢复为原始值。
最佳答案
使用for循环时,将从列表中的值加载index变量。range(x)
创建列表[0,1,2, ... ,x]
,因此在每次迭代中,datum
(在您的情况下)都会从该列表中获得新的数值。这将覆盖datum
可能包含的任何值。
您可以通过切换到while
循环来实现目标:
datum = 0
end = len(lists)
while datum < end:
# do stuff
# don't forget to increment datum
datum += 1