¿Cómo convertir una lista de números a enteros en Python?

Oct 19 2020

Entonces tengo una lista de listas de números de un archivo .txt cargado en Python:

ls = [['3456', '937'], ['3666', '54533'], ['24456', '83279'], ['344516', '10410']...]

¿Cómo puedo convertir los números ( type: list) a números enteros, pero mantenerlos en esta lista?

Es decir, la salida que me gustaría:

[[3456, 937], [3666, 54533], [24456, 83279], [344516, 10410]...]

Intenté usar esto:

ls = [int(i) for i in ls]

Pero obtenga el error: el argumento int () debe ser una cadena.

¿Alguien sabe cómo hacer la conversión a la salida que me gustaría? ¡Gracias!

Respuestas

1 dmitryro Oct 19 2020 at 09:29

Puede usar una comprensión más adentro:

ls = [[int(i) for i in k] for k in ls]
1 PacketLoss Oct 19 2020 at 09:29

Puede utilizar mapy enumerar la comprensión.

ls = [['3456', '937'], ['3666', '54533'], ['24456', '83279'], ['344516', '10410']]

>>> [list(map(int, i)) for i in ls]
#[[3456, 937], [3666, 54533], [24456, 83279], [344516, 10410]]
Pedro Oct 19 2020 at 09:39

La lista es mutable pero la cadena no. Puede utilizar for loop para lograr esto.

print(id(a[0]))
print(id(a[0][0]))

for i in range(len(a)):
    for j in range(len(a[i])):
        a[i][j] = int(a[i][j])

print(a)
print(type(a[0][0]))
print(id(a[0])) # the same id with the first print
print(id(a[0][1])) # id has changed