Necesito tomar medidas cuando pole[i][j] == 1 , pero arroja un error:
TypeError: los índices de la lista deben ser números enteros o segmentos, no una lista
pole = [[0,1,0], [1,0,1], [0,1,1]] for i in pole: for j in pole: if pole[i][j] == 1: my_code()Utiliza for i in pole que obtiene los valores reales del pole no los índices. Aquí está el código corregido:
pole = [[0,1,0], [1,0,1], [0,1,1]] for i in range(len(pole)): for j in range(len(pole[i])): if pole[i][j] == 1: my_code()Alternativamente, podría usar los valores, no los índices, así:
pole = [[0,1,0], [1,0,1], [0,1,1]] for i in pole: for j in i: if j == 1: my_code()un bucle for-in itera sobre los elementos de una lista, no sobre sus índices. Además, tenga en cuenta que tiene el ciclo interno realizando la misma iteración que el ciclo externo, sin iterar sobre la sublista:
for x in pole: for y in x: if y == 1: my_code()Bueno, técnicamente hablando, dado que my_code() no usa i o j , podrías hacer algo como esto:
for _ in range(sum(map(sum, pole))): my_code()Los elementos en polo no necesariamente tienen que ser 0 y 1; podría desencadenar otras condiciones, por ejemplo:
sum(map(lambda x: sum(y > 0 for y in x), pole)