103 votes

Comment ajouter plusieurs éléments dans une ligne en Python ?

Je l'ai fait :

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 le newlist.append() en quelques déclarations.

263voto

Ignacio Vazquez-Abrams Points 312628

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

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

5voto

Karl Knechtel Points 24349

No.

Tout d'abord, append 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 non plus en obtenir un élément : append[i+1] est erronée pour la même raison). Lorsque vous appelez une fonction, l'argument va dans parenthèses c'est-à-dire les ronds : () .

Deuxièmement, ce que vous essayez de faire, c'est "prendre une séquence, et placer chaque élément de celle-ci à la fin de cette autre séquence, dans l'ordre original". Ça s'écrit extend . append c'est "prends cette chose, et mets-la à la fin de la liste", comme un seul élément , même si c'est aussi une liste ". (Rappelons qu'une liste est une sorte de séquence).

Mais alors, vous devez être conscient que i+1:i+4 est une construction spéciale qui n'apparaît qu'à l'intérieur des crochets (pour obtenir une tranche d'une séquence) et des accolades (pour créer une séquence dict objet). Vous ne pouvez pas le passer à une fonction. Vous ne pouvez donc pas extend avec ça. Vous devez créer une séquence de ces valeurs, et la façon naturelle de le faire est d'utiliser la fonction range fonction.

5voto

Kevin Postlewaite Points 483

Vous pourriez aussi :

newlist += mylist[i:i+22]

3voto

saoud rehman Points 31
mylist = [1,2,3]

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

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

SORTIE :

[1, 2, 3, 4, 5, 'string', False]

2voto

Idrisi_Kasim Points 81

Utilisez ce :

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

#Code
L1+L2

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

En utilisant l'opérateur (+), vous pouvez sauter les multiples opérateurs append & extend en une seule ligne de code et ceci est valable pour plus de deux listes par L1+L2+L3+L4.......etc.

Bon apprentissage... :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X