Ich versuche, Elemente aus einer verschachtelten Liste in Python zu entfernen. Ich habe eine verschachtelte Liste wie folgt:
%Vor%Ich möchte die Einträge in jeder Unterliste entfernen, die mit der indizierten Position der Unterliste in der Hauptliste übereinstimmen. Also zum Beispiel, ich muss 0 aus der ersten Unterliste entfernen, 1 aus der zweiten Unterliste, etc. Ich versuche, eine Listenbefugnis zu verwenden, dies zu tun. Das habe ich ausprobiert:
%Vor% Das funktioniert für range(len(families))
bis zu 3, aber darüber hinaus bekomme ich IndexError: list index out of range
. Ich bin mir nicht sicher warum. Kann mir jemand eine Idee geben, wie man das macht? Vorzugsweise ein Einzeiler (Listenverständnis).
Danke.
Sie haben es fast richtig gemacht. Ersetzen Sie einfach families[i][j]
durch j
und es funktioniert:
Es kann mit der enumerate
Funktion etwas sauberer geschrieben werden:
Oder verwenden Sie remove
, wenn es Ihnen nichts ausmacht, die ursprüngliche Liste zu ändern:
Bearbeitete Frage, Entfernen meiner Antwort, die das falsche Problem gelöst hat. Außerdem wurde eine zusätzliche Antwort von @Ashwini hinzugefügt:
Zum Vergleich:
%Vor%Das sind Mikrosekunden, also denke ich, was auch immer du tun willst, ist in Ordnung, es sei denn, du machst das eine Menge von Zeiten.
Macht das, was Sie wollen?
%Vor%BEARBEITEN
Beachten Sie auch, dass der Grund dafür fehlgeschlagen ist, dass Sie beim dritten Element der äußeren Liste ( [1, 2, 3, 4, 5]
) versuchen, das fünfte Element in Ihrer for-Schleife zu erhalten ( for j in families[i]
== for j in [1,2,3,4,5]
), aber families [i] hat eine Länge von 5, was bedeutet, dass der größte Index 4 ist. Tut mir leid, wenn diese Erklärung etwas unklar ist ... vielleicht wird das Folgende helfen, es etwas aufzuklären:
Wenn Sie die ursprüngliche Liste ändern möchten, versuchen Sie Folgendes:
%Vor%Tags und Links python python-2.7