Comment ajouter plusieurs éléments sur une ligne en Python


91

J'ai:

count = 0
i = 0
while count < len(mylist):
    if mylist[i + 1] == mylist[i + 13] and mylist[i + 2] == mylist[i + 14]:
        print mylist[i + 1], mylist[i + 2]
    newlist.append(mylist[i + 1])
    newlist.append(mylist[i + 2])
    newlist.append(mylist[i + 7])
    newlist.append(mylist[i + 8])
    newlist.append(mylist[i + 9])
    newlist.append(mylist[i + 10])
    newlist.append(mylist[i + 13])
    newlist.append(mylist[i + 14])
    newlist.append(mylist[i + 19])
    newlist.append(mylist[i + 20])
    newlist.append(mylist[i + 21])
    newlist.append(mylist[i + 22])
    count = count + 1
    i = i + 12

Je voulais faire les newlist.append()déclarations en quelques déclarations.


Bien évidemment, ce n'est pas la même chose si vous obtenez des résultats différents.
JJJ

C'est une syntaxe invalide.
TerryA

4
En supposant que vos objets sont censés être des listes, votre code n'est pas Python valide comme vous l'utilisez à la []place de (). Veuillez poster un vrai code de travail.
BrenBarn

Réponses:


225

Non. La méthode pour ajouter une séquence entière est list.extend().

>>> L = [1, 2]
>>> L.extend((3, 4, 5))
>>> L
[1, 2, 3, 4, 5]

'insert' fonctionne comme 'append' mais s'ajoute au début de la liste. Existe-t-il une fonction pour ajouter plusieurs valeurs au début d'une liste?
sparrow le

@sparrow: Non. Slice-assign à la place.
Ignacio Vazquez-Abrams

avez-vous besoin que la deuxième entrée soit une liste ou peut-il être simplement chaque élément séparé par des virgules?
Charlie Parker

@CharlieParker: l'argument de list.extend()doit être un itérable.
Ignacio Vazquez-Abrams

5

Non.

Tout d'abord, appendc'est une fonction, donc vous ne pouvez pas écrire append[i+1:i+4]parce que vous essayez d'obtenir une tranche d'une chose qui n'est pas une séquence. (Vous ne pouvez pas obtenir un élément de celui - ci, soit: append[i+1]est mauvais pour la même raison.) Lorsque vous appelez une fonction, l'argument va dans parenthèses , à savoir les rondes: ().

Deuxièmement, ce que vous essayez de faire est de "prendre une séquence et de mettre chaque élément à la fin de cette autre séquence, dans l'ordre d'origine". C'est épelé extend. appendest "prenez cette chose, et mettez-la à la fin de la liste, comme un seul élément , même si c'est aussi une liste ". (Rappelez-vous qu'une liste est une sorte de séquence.)

Mais alors, vous devez être conscient qu'il i+1:i+4s'agit d'une construction spéciale qui apparaît uniquement entre crochets (pour obtenir une tranche d'une séquence) et accolades (pour créer un dictobjet). Vous ne pouvez pas le transmettre à une fonction. Donc vous ne pouvez pas extendavec ça. Vous devez créer une séquence de ces valeurs, et la manière naturelle de le faire est d'utiliser la rangefonction.



2

Utilisez ceci :

#Inputs
L1 = [1, 2]
L2 = [3,4,5]

#Code
L1+L2

#Output
[1, 2, 3, 4, 5]

En utilisant l'opérateur (+), vous pouvez ignorer les multiples opérateurs d'ajout et d'extension dans une seule ligne de code et cela est valable pour plus de deux listes par L1 + L2 + L3 + L4 ....... etc.

Bon apprentissage...:)


1
mylist = [1,2,3]

def multiple_appends(listname, *element):
    listname.extend(element)

multiple_appends(mylist, 4, 5, "string", False)
print(mylist)

PRODUCTION:

[1, 2, 3, 4, 5, 'string', False]
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.