Como converter lista de números em inteiros em Python?

Oct 19 2020

Portanto, tenho uma lista de listas de números de um arquivo .txt carregado em Python:

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

Como posso converter os números ( type: list) para o tipo inteiro, mas mantê-los nesta lista?

Ou seja, a saída que eu gostaria:

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

Eu tentei usar isto:

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

Mas obtenha o erro: o argumento int () deve ser uma string.

Alguém sabe fazer a conversão para a saída que eu gostaria? Obrigado!

Respostas

1 dmitryro Oct 19 2020 at 09:29

Você pode usar mais uma compreensão dentro de:

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

Você pode usar mape listar a compreensão.

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

A lista é mutável, mas a string não. Você pode usar o loop for para fazer isso.

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