Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Passar valores de uma lista str para int

Porque eu não consigo executar esse código? quero passar uma lista com números em str para uma lista com números em int

n = '123'
numeros = []

for i in n:             #transformando n em uma lista
    numeros.append(i)

for i in numeros:
    numeros[i] = int(numeros[i])

print(type(numeros[0]))
1 resposta
solução!
n = '123'
numeros = []

for i in n:             #transformando n em uma lista
    numeros.append(i)

# numeros = ['1', '2', '3'], ou seja, numeros é uma lista com três elementos, cada um sendo uma string

for i in numeros:
    numeros = int(numeros[i])

print(type(numeros[0]))

lista[indice] o índice precisa ser um inteiro, mas você está passando os elementos de numeros (que são strings).

Sugestão de alteração:

n = '123'
numeros = []

for i in n:             #transformando n em uma lista
    numeros.append(i)

for elemento in numeros: # OBS*
    elemento = int(elemento)

print(type(numeros[0]))

OBS: elemento pode ter qualquer nome, só não coloquei i porque muitos iniciantes associam essa letra com ÍNDICE.

for i in lista percorre iterando os ELEMENTOS da lista, não os ÍNDICES.

editado

Mil perdões Gabriel. O código acima não converte os elementos de numeros em inteiro. Para isso, podemos usar a função enumerate() para acessar índice e elemento, ficando assim:

for indice, elemento in enumerate(numeros):
    numeros[indice] = int(elemento)

Ou ainda usando list comprehensions no lugar do for:

n = '123'
numeros = []

for i in n:             #transformando n em uma lista
    numeros.append(i)

numeros = [int(elemento) for elemento in numeros]

print(type(numeros[0]))

Peço desculpas mais uma vez.

Mais sobre: