Quelle est l'approche Pythonic pour atteindre les objectifs suivants?
# 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)]
Chaque membre de list_c
est un tuple, dont le premier membre est de list_a
et le second est de list_b
.
itertools
module définit unezip_longest()
méthode qui s'arrête à la fin de la liste la plus longue, remplissant les valeurs manquantes avec quelque chose que vous fournissez comme paramètre.s/zip_longest()/izip_longest()
. Renommé en Python 3.x enzip_longest()
.itertools.product()
est-ce que.En python 3.0, zip renvoie un objet zip. Vous pouvez en obtenir une liste en appelant
list(zip(a, b))
.la source
Vous pouvez utiliser la carte lambda
Cela fonctionnera également si la longueur des listes originales ne correspond pas
la source
map(None, a,b)
Vous êtes à la recherche de la fonction zip intégrée .
la source
Je ne sais pas si c'est une manière pythonique ou pas mais cela semble simple si les deux listes ont le même nombre d'éléments:
la source
Je sais que c'est une vieille question à laquelle on a déjà répondu, mais pour une raison quelconque, je veux toujours publier cette solution alternative. Je sais qu'il est facile de découvrir quelle fonction intégrée fait la "magie" dont vous avez besoin, mais cela ne fait pas de mal de savoir que vous pouvez le faire vous-même.
la source
card
dans leif-elif
ne sont pas nécessaires, c'est pourquoi vous avez lecontinue
. (En fait, sans quecontinue
vous n'auriez pas à modifier les listes: les deux missions mentionnées précédemment devraient alors être conservés et deviennentcard = (list_1[i], '')
etcard = ('', list_2[1])
respectivement.)La sortie que vous avez montrée dans l'énoncé du problème n'est pas le tuple mais la liste
vérifier
considérant que vous voulez que le résultat soit un tuple de list_a et list_b, faites
la source
<map object at 0x000001F266DCE5C0>
ou<zip object at 0x000002629D204C88>
. Au moins, la solution concernant la carte et le zip (seul) semble être incomplète (ou trop compliquée) pour moi.Une alternative sans utiliser
zip
:Dans le cas où l'on veut obtenir non seulement des tuples 1er au 1er, 2e au 2e ... mais toutes les combinaisons possibles des 2 listes, cela se ferait avec
la source