Actualización del valor del índice en For Loop

Basado en un elemento que se encuentra en una lista, me gustaría actualizar el valor del índice en mi bucle for. Creo que he hecho esto, pero mi secuencia de comandos de Python no parece dar los valores correctos y no puedo entender por qué:

Mi lista se ve así:

dataXY = [['6', 'c', '3', '7', '2', '9', '1', '7'],['8', '4', 'c', '7', '9', '3', '4', '7', '1', '2']] 

Y mi código que funciona en esto es:

 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 

Lo que está imprimiendo es esto: 1 5 3 4 5 6 7 0 1 2 6 4 5 6 7 8 9

Por alguna razón, el valor del índice se está restableciendo, pero luego se restaura (de cómo se salta a 5 de 1 y luego vuelve a 3) No entiendo por qué está haciendo esto, y necesito el valor de índice para saltar 3 lugares y actualizar permanentemente en lugar de restaurarse a su valor original.

Cuando utiliza un bucle for, la variable de índice se carga desde los valores de una lista. range(x) crea la lista [0,1,2, ... ,x] por lo que en cada iteración, datum (en su caso) obtiene un nuevo valor numérico de esa lista. Esto anula cualquier valor que pueda contener el datum .

Puedes lograr tu objective cambiando a un bucle while:

 datum = 0 end = len(lists) while datum < end: # do stuff # don't forget to increment datum datum += 1 

Use un bucle while:

 datum=0 while datum < len(lists): 

En un bucle for, el valor del datum se restablecerá automáticamente al siguiente valor del range tan pronto como el bucle comience nuevamente. Aunque un bucle while no actualizará el datum automáticamente como lo hace for-loop, tendrá que boostlo usted mismo, de lo contrario, su código quedará atrapado en un bucle infinito.