So hängen Sie in Python mehrere Elemente in einer Zeile an


91

Ich habe:

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

Ich wollte die newlist.append()Aussagen in ein paar Aussagen umwandeln.


Natürlich ist es nicht dasselbe, wenn Sie unterschiedliche Ergebnisse erzielen.
JJJ

Dies ist eine ungültige Syntax.
TerryA

4
Angenommen, Ihre Objekte sind Listen, dann ist Ihr Code kein gültiges Python, wie Sie es []stattdessen verwenden (). Bitte posten Sie echten Arbeitscode.
BrenBarn

Antworten:


224

Nein. Die Methode zum Anhängen einer gesamten Sequenz lautet list.extend().

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

'Einfügen' fungiert als 'Anhängen', wird jedoch am Anfang der Liste hinzugefügt. Gibt es eine Funktion zum Hinzufügen mehrerer Werte am Anfang einer Liste?
Spatz

@sparrow: Nein. Stattdessen Slice-Assign.
Ignacio Vazquez-Abrams

Benötigen Sie die zweite Eingabe als Liste oder kann es sich nur um jedes durch Kommas getrennte Element handeln?
Charlie Parker

@CharlieParker: Das Argument zu list.extend()muss iterierbar sein.
Ignacio Vazquez-Abrams

5

Nein.

Zunächst einmal appendist eine Funktion, so dass Sie nicht schreiben können, append[i+1:i+4]weil Sie versuchen, ein Stück von etwas zu bekommen, das keine Sequenz ist. (Sie können auch kein Element davon erhalten: append[i+1]ist aus demselben Grund falsch.) Wenn Sie eine Funktion aufrufen, steht das Argument in Klammern , dh in den runden:() .

Zweitens versuchen Sie, "eine Sequenz zu nehmen und jedes Element am Ende dieser anderen Sequenz in der ursprünglichen Reihenfolge einzufügen". Das ist geschrieben extend. appendist "nimm dieses Ding und setze es am Ende der Liste als einzelnes Element ein , auch wenn es auch eine Liste ist ". (Denken Sie daran, dass eine Liste eine Art Sequenz ist.)

Aber dann müssen Sie sich bewusst sein, dass i+1:i+4es sich um ein spezielles Konstrukt handelt, das nur in eckigen Klammern (um ein Slice aus einer Sequenz zu erhalten) und geschweiften Klammern (um ein dictObjekt zu erstellen ) angezeigt wird . Sie können es nicht an eine Funktion übergeben. Damit kannst du nicht extend. Sie müssen eine Folge dieser Werte erstellen, und der natürliche Weg, dies zu tun, ist mit der rangeFunktion.



2

Benutze das :

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

#Code
L1+L2

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

Mit dem Operator (+) können Sie die mehreren Operatoren zum Anhängen und Erweitern in nur einer Codezeile überspringen. Dies gilt für mehr als zwei Listen von L1 + L2 + L3 + L4 ....... usw.

Viel Spaß beim Lernen ... :)


1
mylist = [1,2,3]

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

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

AUSGABE:

[1, 2, 3, 4, 5, 'string', False]
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.