Python - Duda para generar matices

 
Vista:
sin imagen de perfil

Duda para generar matices

Publicado por Roberto (3 intervenciones) el 12/03/2017 18:27:57
Hola.
Tengo un pequeño código que me genera una matriz de 5X5 a partir de un txt.
El problema es que al general la lista, los datos de la lista están en texto y yo los necesito en número para poder empezar a hacer operaciones con ellos.
Ya intenté de diferentes formas pero no encuentro la solución.
Gracias.

1
2
3
4
5
6
7
8
matriz=[]
archivo=open('datos.txt','r')
for linea in archivo:
    matriz.append(linea.strip().split())
 
archivo.close()
 
print(matriz)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Duda para generar matices

Publicado por xve (1646 intervenciones) el 13/03/2017 08:25:50
Hola Roberto, prueba así:
1
matriz.append(int(linea.strip().split()))

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Duda para generar matices

Publicado por Roberto (3 intervenciones) el 13/03/2017 16:54:18
hola, gracias por tu ayuda. No funciona lo que me comentas, me da este error:

TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

Ya había intentado usar int() en diferentes lugares y siempre me da el mismo error, ayer tuve una nueva idea y deje de lado exportar el documento para hacer mas fácil las pruebas, (el programa final si debe de extraer los datos desde un txt), tengo este nuevo código que funciona mas o menos. Me da como resultado una lista pero no como la que necesito.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
l0=[['11','12','13'],['14','15','16'],['17','18','19']]
l2=[]
i=0
 
for r in l0:
    l1=l0[i]
    i=i+1
    b=len(l1)
    ñ=0
 
    for e in l1:
        a=int(l1[ñ])
        l2.append(a)
        ñ=ñ+1
 
print(l2)
.


me da como resultado la siguiente lista

[11, 12, 13, 14, 15, 16, 1, 17, 18, 19, 2, 3]

y yo necesito

[[11, 12, 13], [14, 15, 16], [17, 18, 19]]

Gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Duda para generar matices

Publicado por kip (257 intervenciones) el 13/03/2017 17:05:00
Para este caso deberia funcionarte lo siguiente:

1
2
3
4
5
6
7
l0=[['11','12','13'],['14','15','16'],['17','18','19']]
l2=[]
 
for item in l0:
    l2.append([int(item2) for item2 in item])
 
print (l2)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Duda para generar matices

Publicado por kip (257 intervenciones) el 13/03/2017 17:03:21
Hola, intenta con lo siguiente:

1
2
3
4
5
6
7
8
matriz=[]
archivo=open('datos.txt','r')
for linea in archivo:
    a_linea = linea.strip().split()
    matriz.append([int(item) for item in a_linea])
archivo.close()
 
print(matriz)

Nos avisas si es lo que buscabas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Duda para generar matices

Publicado por Roberto (3 intervenciones) el 13/03/2017 17:19:12
Hola kip, de maravilla, muchas gracias los dos algoritmos hacen exactamente lo que necesito. Muchas gracias por ayudar y por compartir tus conocimientos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar