TransWikia.com

Fazer a união do conteúdo de duas listas considerando os índices em Python?

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.

One Answer

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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP