l1 = [4, 6, 8]
l2 = [a, b, c]
résultat = [(4,a),(6,b),(8,c)]
Comment joindre des listes élément par élément en Python?
Comment puis-je faire cela?
l1 = [4, 6, 8]
l2 = [a, b, c]
résultat = [(4,a),(6,b),(8,c)]
Comment joindre des listes élément par élément en Python?
Comment puis-je faire cela?
Utilisez zip
.
l1 = [1, 2, 3]
l2 = [4, 5, 6]
>>> zip(l1, l2)
[(1, 4), (2, 5), (3, 6)]
Notez que si vos listes sont de longueurs différentes, le résultat sera tronqué à la longueur de l'entrée la plus courte.
>>> print zip([1, 2, 3],[4, 5, 6, 7])
[(1, 4), (2, 5), (3, 6)]
Vous pouvez également utiliser zip avec plus de deux listes:
>>> zip([1, 2, 3], [4, 5, 6], [7, 8, 9])
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
Si vous avez une liste de listes, vous pouvez appeler zip
à l'aide d'un astérisque:
>>> l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> zip(*l)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
La zip
fonction standard fait pour vous:
>>> l1 = [4, 6, 8]
>>> l2 = ["a", "b", "c"]
>>> zip(l1, l2)
[(4, 'a'), (6, 'b'), (8, 'c')]
Si vous utilisez 3.x Python, puis retourne zip
un générateur et vous pouvez le convertir en une liste à l'aide du constructeur list()
:
>>> list(zip(l1, l2))
[(4, 'a'), (6, 'b'), (8, 'c')]
>>> l1 = [4, 6, 8]; l2 = ['a', 'b', 'c']
>>> zip(l1, l2)
[(4, 'a'), (6, 'b'), (8, 'c')]
Si les listes ont la même longueur ou si vous voulez que la longueur de la liste soit la longueur de la liste la plus courte, utilisez zip, comme Les gens ont souligné.
Si les listes sont différentes longueurs, vous pouvez utiliser map
avec une fonction de transformation de None
:
>>> l1 = [1, 2, 3, 4, 5]
>>> l2 = [9, 8, 7]
>>> map(None, l1, l2)
[(1, 9), (2, 8), (3, 7), (4, None), (5, None)]
Notez que les valeurs « extra » s'appairés avec None
.
Il est également intéressant de noter que les deux zip
et map
peut être utilisé avec un certain nombre de iterables:
>>> zip('abc', 'def', 'ghi')
[('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')]
>>> map(None, 'abc', 'def', 'gh')
[('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', None)]
+1 pour 'zip' avec l'argument astérisque. M'a beaucoup aidé! – erickrf