vacia tipos rangos must lista len integers función for establecer español datos crear python matrix typeerror python-2.x

tipos - Python: TypeError: los índices de lista deben ser enteros, no str



typeerror: string indices must be integers json (5)

Está utilizando i en su bucle for externo, y es un int. Luego en el ciclo tienes:

value = [int(i) for i in x.split()]

que i hace una cadena (que es lo que split devuelve). ¿Tal vez piensas que hay algún tipo de alcance dentro [ ] ? No hay Usted tiene una colisión de nombre, cambie uno de ellos.

Voy a hacer Matrix Addition en Python. (No terminar). Pero muestra un error.

m, n = (int(i) for i in raw_input().split()) a = [[0 for i in range(m)] for j in range(n)] b = [[0 for i in range(m)] for j in range(n)] c = [] total = [] for i in range(m): x = raw_input() for j in range(n): value = [int(i) for i in x.split()] c[i][j] = a[i][j] #c.append(value) print a for i in c: print i

Quiero ingresar

3 3 <- matriz dimensional m * n

1 2 3>

3 2 1> matriz A

1 3 2>

1 1 1>

1 1 1> matriz B

1 1 1>

y muestra como

2 3 4>

4 3 2> matriz A + B

2 4 3>


Está utilizando la misma variable en inner for loop.

for i in range(m): x = raw_input() for j in range(n): # variable i is refering to outer loop value = [int(p) for p in x.split()] c[i][j] = a[i][j] #c.append(value) print a for i in c: print i


Más allá de las primeras dos respuestas, tendrás un problema con esta afirmación:

c[i][j] = a[i][j]

Cuando comience el ciclo, seré 0 y está bien, pero c es una lista vacía y no tiene iterable en la primera posición, por lo que c[0][0] devolverá un error. Deshágase de él y elimine el comentario de la siguiente línea:

#c.append(value)

EDITAR:

Tu código no devolverá lo que quieras. Será mejor que hagas algo como esto para crear una matriz con los lados dados:

for i in range(m): d = [] for j in range(n): x = raw_input() d.append(int(x)) c.append(d)

Si tienes 3 para m y n , entonces crearás una matriz con lados 3 x 3 guardados en la variable c . De esta forma, no es necesario dividir la entrada del usuario. El usuario puede dar un número a la vez. E incluso podrías cambiar la siguiente línea:

x = raw_input()

a:

x = raw_input("{0}. row, {1}. column: ".format(i+1, j+1))

¡Pruébalo!


import time m, n = (int(i) for i in raw_input().split()) a = [] b = [] total = [[0 for i in range(n)] for j in range(m)] for i in range(m): x = raw_input() for j in range(n): value = [int(i) for i in x.split()] a.append(value) #print a for i in range(m): x = raw_input() for j in range(n): value = [int(i) for i in x.split()] b.append(value) #print b for i in range(m): for j in range(n): total[i][j] = a[i][j] + b[i][j] for i in total: print '' ''.join(map(str, i)) time.sleep(2)

¡DE ACUERDO! ¡Me lo imaginé! Gracias


También puede presionar este error si declara un int y lo trata como un dict

>>> a = [] >>> a[''foo''] = ''bar'' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: list indices must be integers, not str