pythonisches Bearbeiten einer Liste von String-Tupples [Duplikat]
mysql hat eine Liste von Tupeln des Formulars ausgegeben
a=[("1","2","3"),("4","5","6"),("7","8","9")]
Ich möchte eine Liste der Tupel des Formulars
c=[("2","3"),("5","6"),("8","9")]
dh die letzten beiden Elemente jedes Tupels, damit ich das in einen Befehl für meine SQL Executemany einfügen und die nächsten Daten abrufen kann.
Meine Intuition war, dass ich mit dem Befehl die gewünschte Matrix erhalten konnte
c=[for b in a: b[1:]]
aber Python, mag das nicht. Warum funktioniert das nicht und was ist der pythonischste Weg, um die gewünschte Liste von Tupeln zu erhalten?
Antworten
Da Sie die letzten beiden Elemente jedes Tupels möchten, funktioniert die Verwendung des Slice [1:] (wie in den anderen Antworten) nicht, wenn die Anzahl der Elemente in jedem Tupel nicht 3 beträgt.
Verwenden Sie stattdessen ein Listenverständnis mit dem negativen Slice von [:-2]:
a = [("1","2","3"),("4","5","6"),("7","8","9")]
a = [t[-2:] for t in a]
print(a)
Ausgabe:
[('2', '3'), ('5', '6'), ('8', '9')]
Sie haben eine etwas falsche Syntax, aber den richtigen Ansatz gewählt.
c = [b[1:] for b in a]
Sie möchten jedes iTem in a:
>>> a = [("1","2","3"),("4","5","6"),("7","8","9")]
>>> [i[1:] for i in a]
[('2', '3'), ('5', '6'), ('8', '9')]
Sie können so durchgehen, hier werden am Ende Schleifen durchlaufen:
a=[(1,2,3),(4,5,6),(7,8,9)]
c=[b[1:] for b in a]
print(c)