Stack Overflow em Português Asked on December 16, 2021
O cenário é o seguinte, tenho duas listas, ex:
list1 = [1,2,3,4]
list2 = [5,6,7,8]
Quero gerar uma lista nova que fique assim:
[15,26,37,48]
Ou seja, que "junte" os elementos de cada índice.
Fiz a concatenação assim, mas a lista ficou assim:
[1,5,2,6,3,7,4,8]
Poderia usa join
para ter a saída que quero?
Ambas as listas possuem o mesmo tamanho.
Assumindo que os valores sempre têm apenas um dígito, uma opção é fazer as contas - os números da primeira lista correspondem à dezena, e os da segunda lista correspondem à unidade, então basta multiplicar o primeiro por 10 e somar com o segundo:
list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8]
result = []
for n1, n2 in zip(list1, list2):
result.append(10 * n1 + n2)
print(result) # [15, 26, 37, 48]
zip
percorre ambas as listas ao mesmo tempo, então a cada iteração do for
, n1
será um número da list1
e n2
será um número da list2
.
O detalhe é que o loop é encerrado quando a menor das listas terminar, mas como você disse que ambas têm o mesmo tamanho, isso não será um problema.
Se quiser, também pode usar uma list comprehension, bem mais sucinta e pythônica:
list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8]
result = [ 10 * n1 + n2 for n1, n2 in zip(list1, list2) ]
print(result) # [15, 26, 37, 48]
join
serve para juntar várias strings em uma só, então não serviria para o seu caso.
E provavelmente alguém vai sugerir transformar os números em strings, concatená-las e transformar em número de novo. Algo assim:
result = []
for n1, n2 in zip(list1, list2):
result.append(int(str(n1) + str(n2)))
Mas eu acho uma volta desnecessária. Se as listas só têm números, eu acho mais simples fazer as contas, em vez de ficar convertendo para string e depois de volta para número.
Answered by hkotsubo on December 16, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP