基于列表中找到的元素,我想更新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

10-08 01:42