Possible d'ajouter plusieurs listes à la fois? (Python)
J'ai un tas de listes que je veux ajouter à une liste unique qui est une sorte de "principal" de la liste dans un programme, que je suis en train d'écrire. Est-il un moyen de le faire en une seule ligne de code, plutôt que de l'ordre de 10? Je suis un débutant donc je n'ai aucune idée...
Pour une meilleure image de ma question, que si j'avais ces listes:
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
Et souhaitez ajouter des y et z de x. Au lieu de faire:
x.append(y)
x.append(z)
Est-il un moyen de le faire en une seule ligne de code? J'ai déjà essayé:
x.append(y, z)
Et il l'habitude de travailler.
Voulez-vous vraiment
Ce que la sortie ne vous attendez-vous?
Non, je n'ai jamais vu .étendre avant, que fait-il?
Que pensez-vous de itertools.chaîne ?
.append
, ou .extend
? Comprenez-vous la différence?Ce que la sortie ne vous attendez-vous?
Non, je n'ai jamais vu .étendre avant, que fait-il?
Que pensez-vous de itertools.chaîne ?
.append
va ajouter un élément à la liste. .extend
concaténer une liste une liste.OriginalL'auteur Tyler Haddaway | 2013-01-03
Vous devez vous connecter pour publier un commentaire.
devrait faire ce que vous voulez
ou
ou même
x
, par opposition à l'évolution de lax
en place.J'ai essayé .étendre et cela a fonctionné parfaitement. Merci pour l'aide.
l'extension de la méthode retourne rien pour moi.
il modifie ... il ne retourne rien ...
OriginalL'auteur Joran Beasley
L'extension de mon commentaire
itertools.chain([1, 2, 3], [4, 5, 6], [7, 8, 9])
=[1, 2, 3, 4, 5, 6, 7, 8, 9]
OriginalL'auteur night-crawler
Vous pouvez utiliser
sum
fonction avec une valeur de démarrage (liste vide) a indiqué:C'est plus particulièrement adapté si vous souhaitez ajouter un nombre arbitraire de listes.
OriginalL'auteur Minjoon Seo
équivalente à la réponse ci-dessus, mais suffisamment différentes pour être mérite une mention:
dans l'expression ci-dessus, * est important pour groking résultat que les arguments de la chaîne, c'est même en tant qu'état de chaîne(x,y,z). Aussi, notez le résultat est de hachage-commandé.
OriginalL'auteur msudder
Si vous préférez un peu plus à l'approche fonctionnelle, vous pourriez essayer:
Cela vous permettra d'enchaîner un nombre quelconque de listes sur la liste
x
.Si vous souhaitez simplement concaténer n'importe quel nombre de listes ensemble (c'est à dire pas sur une liste de base), vous pouvez simplifier:
Prendre note que notre BFDL a ses réserves à l'égard des lambdas, réduire, et les amis: https://www.artima.com/weblogs/viewpost.jsp?thread=98196
Pour compléter cette réponse, vous pouvez en lire plus à propos de les réduire dans la documentation: https://docs.python.org/3/library/functools.html#functools.reduce
Je cite: "Appliquer la fonction à deux arguments de façon cumulative les éléments de l'ordre, de gauche à droite, de manière à réduire la séquence à une valeur unique."
P. S. à l'Aide de
sum()
comme décrit dans https://stackoverflow.com/a/41752487/532513 est super compact, il ne semble pas travailler avec des listes, et il est vraiment rapide (voir https://stackoverflow.com/a/33277438/532513 ) maishelp(sum)
en Python 3.6 a ceci à dire:Bien que c'est un peu inquiétant, je vais probablement garder aussi ma première option pour la concaténation de listes.
OriginalL'auteur Charl Botha
En une seule ligne , il peut être fait dans l'une des manières suivantes
ou
OriginalL'auteur Somnath Pal