3
respostas

Sintax para soma em cada elemento dentro da lista utilizando "for" com uma linha

Tudo bem!

Como que o codigo abaixo faz para obter a soma (x + 10) de cada elemento dentro da lista para o "for" com apenas uma linha: "valor3 = [(x + 10) for x in valor]"

Algumas dúvidas:

  • Não consegui refazer a sintaxe para o "for" com apenas uma linha para o valor3; consegui apenas utilizando o exemplo com o "valor1.append(x+10)";
  • Não entendi como que nesse caso o "for" com apenas uma linha para o valor3 consegue gerar 3 elementos para a lista
# sintax para somar dentro da lista para cada elemento
valor = [1, 2, 3]
valor1 = []

# resultado: [11, 12, 13]
for x in valor:
    valor1.append(x + 10)

# resultado: [13]
for x in valor:
    valor2 = [x + 10]

# resultado: [11, 12, 13]
valor3 = [(x + 10) for x in valor]

print(valor1)
print(valor2)
print(valor3)
3 respostas

Tudo bom?

Não consegui entender direito sua primeira dúvida... você fiz que não conseguiu refazer a sintaxe para o valor3 em apenas uma linha, mas é exatamente o que está escrito no seu código....

Quando a segunda dúvida, ela gera 3 valores pois você está pedindo para realizar a conta (x + 10) para cada x dentro da lista 'valor', então ela vai adicionar o mesmo número de elementos que tem na lista valor.

Tenta reescrever sua primeira dúvida e eu tento te ajudar!

Obrigado Eduardo! Segue aí

1a duvida

  • Não consegui transformar a sintaxe condensada em uma linha do "for" (do valor3) em uma sintaxe menos condensada e com alta similaridade entre as duas; acredito que esse exemplo é relacionado a List comprehension, e, no caso de Lista, talvez não tenho como obter uma sintaxe similar
  • Veja abaixo um exemplo de List comprehension com o "if", onde tem uma sintaxe condensada em uma linha que é praticamente igual a uma sintaxe menos condensada

2a duvida

  • Não entendi como que o "for" com apenas uma linha para o valor3 consegue gerar 3 elementos para a lista; a principio esperava um resultado igual a 13 (# resultado: [13])
valor = [1, 2, 3]
# "for" utilizando sintaxe condensada uma linha
# resultado: [11, 12, 13]
valor3 = [(x + 10) for x in valor]
print(valor3)

# tentativa de "for" utilizando sintaxe menos condensada com alta similaridade
# resultado: [13]
for x in valor:
    valor3 = [(x + 10)]
print(valor3)

.

Exemplo utilizando o "if" com sintaxe condensada em uma linha e com sintaxe menos condensada

valor = 1
# "if" condensado em uma linha
dados = "ok" if valor == 1 else "verificar"
print(dados)

valor = 2
# "if" menos condensado
if valor == 1:
    dados = "ok"
else:
    dados = "verificar"
print(dados)

Ahh, agora entendi suas dúvidas... eu nunca tinha pensado nessas situações na vdd, sou estudante de python faz um mês mais ou menos, e caramba, não tenho ideia de como resolver hahahaha