TypeError: los índices de lista deben ser enteros, no de lista. ¿Como arreglar?

Ahí está el código con el TypeError en él. “los índices de lista deben ser enteros, no listados”, aunque son enteros. Te agradecería que me ayudaras a descubrir qué está mal. Lo que necesito es obtener la matriz 7×5 de la pestaña fuente 7×5 con diferentes valores. El error se produce en la última línea.

lines = [] with open("text.txt") as f: for line in f: line = [int(x) for x in line if (x != ' ') and (x != '\n')] lines.append(line) f.close() 

Lo que tengo después de leer el archivo es una lista de listas con números llamados “líneas”. Es enteros. No cuerdas. Me gusta:

 >> [[1, 2, 3...], [4, 5, 6...], [7, 8, 9...],[...]] i = 1 j = 1 T = [] T.append(lines[0][0]) 

Hice esto para evitar IndexError (lista fuera de rango) en la última línea ( i-1 y demás). Sin embargo, no creo que sea Python-Way realmente. Apreciaría ayuda con esto también.

 for i in lines: for j in lines: T[i][j] = lines[i][j] + max(T[i][j-1], T[i-1][j]) 

Aquí es donde se produce el error. No entiendo qué debo arreglar si i , j ya están int .

i y j no son índices; son valores de la lista de lines . Python for bucles son para cada constructos .

Utilizar:

 for i, line in enumerate(lines): for j, value in enumerate(line): T[i][j] = value + max(T[i][j - 1 % len(T[i])] + T[i - 1 % len(T)][j]) 

donde los cálculos de % len() ajustan a la última entrada en T o T[i] cuando i y / o j son 0 . La función enumerate() agrega índices al bucle.

Esto supone que ya ha creado previamente una estructura de listas de listas anidadas en T

 for i in lines: for j in lines: 

i y j iteran sobre los elementos de las lines , no los índices. Eso significa que i y j son siempre listas, líneas enteras de números.

Si desea revisar los índices (normalmente no lo hace, pero puede ser la mejor opción aquí), desea

 for i in range(len(lines)): for j in range(len(lines[i])): 

Esto es incómodo por diseño, ya que los diseñadores de Python quieren que la gente omita la iteración sobre los elementos de una secuencia.

Además, tenga en cuenta que su bucle intenta acceder a elementos de lines antes de la primera fila y antes de la primera columna. Tal vez quieras comenzar tus bucles en la segunda fila y columna.