Entfernen von Elementen aus einer verschachtelten Liste Python

7

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.

    
johntfoster 23.03.2012, 23:10
quelle

4 Antworten

9

Sie haben es fast richtig gemacht. Ersetzen Sie einfach families[i][j] durch j und es funktioniert:

%Vor%

Es kann mit der enumerate Funktion etwas sauberer geschrieben werden:

%Vor%

Oder verwenden Sie remove , wenn es Ihnen nichts ausmacht, die ursprüngliche Liste zu ändern:

%Vor%     
Niklas B. 23.03.2012, 23:15
quelle
5

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.

    
sberry 23.03.2012 23:19
quelle
3

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:

%Vor%     
mgilson 23.03.2012 23:17
quelle
2

Wenn Sie die ursprüngliche Liste ändern möchten, versuchen Sie Folgendes:

%Vor%     
Ashwini Chaudhary 23.03.2012 23:33
quelle

Tags und Links