Qual é a abordagem pitônica para obter o seguinte?
# Original lists:
list_a = [1, 2, 3, 4]
list_b = [5, 6, 7, 8]
# List of tuples from 'list_a' and 'list_b':
list_c = [(1,5), (2,6), (3,7), (4,8)]
Cada membro de list_c
é uma tupla, cujo primeiro membro é de list_a
e o segundo é de list_b
.
itertools
módulo define umzip_longest()
método que para no final da lista mais longa, preenchendo os valores ausentes com algo que você fornece como parâmetro.s/zip_longest()/izip_longest()
,. Renomeado em Python 3.x parazip_longest()
.itertools.product()
faz isso.No python 3.0, zip retorna um objeto zip. Você pode obter uma lista dela ligando
list(zip(a, b))
.fonte
Você pode usar o mapa lambda
Isso também funcionará se os comprimentos das listas originais não corresponderem
fonte
map(None, a,b)
Você está procurando o zip da função embutida .
fonte
Não tenho certeza se isso é uma maneira python ou não, mas isso parece simples se ambas as listas tiverem o mesmo número de elementos:
fonte
Sei que essa é uma pergunta antiga e já foi respondida, mas, por algum motivo, ainda quero postar esta solução alternativa. Eu sei que é fácil descobrir qual função interna faz a "mágica" que você precisa, mas não faz mal saber que você pode fazer isso sozinho.
fonte
card
noif-elif
não são necessárias, é por isso que você tem ocontinue
. (Na verdade, sem ocontinue
que não teria de alterar as listas: ambas as atribuições anteriormente mencionados devem ser mantidos e tornar-secard = (list_1[i], '')
ecard = ('', list_2[1])
, respectivamente.)A saída que você mostrou na declaração do problema não é a tupla, mas a lista
verificar se há
considerando que você deseja o resultado como tupla fora de list_a e list_b, faça
fonte
<map object at 0x000001F266DCE5C0>
ou<zip object at 0x000002629D204C88>
. Pelo menos, a solução sobre map e zip (sozinha) parece estar incompleta (ou muito complicada) para mim.Uma alternativa sem usar
zip
:Caso você queira obter não apenas as tuplas 1ª com 1ª, 2ª com 2ª ... mas todas as combinações possíveis das 2 listas, isso seria feito com
fonte