Vor kurzem stieß ich auf dieses Problem:
Sagen Sie, es gibt eine Liste von etwas, das ich bearbeiten möchte:
%Vor%Und ich möchte etwas ausschließen, indem ich eine andere Liste verwende, zum Beispiel:
%Vor%Die process_list sollte so aussehen, nachdem ich die exclude_list auf sie angewendet habe (jedes process_list-Element, das eine sub enthält:
) %Vor% oder wenn die exclude_list ist:
exclude_list=["pen","banana"]
Die process_list sollte dies sein, nachdem der Filter angewendet wurde:
%Vor%Was ich zuerst versuchte, war:
%Vor% Natürlich funktionierte das nicht, weil das Entfernen von Elementen aus der Liste während der Iteration mit einer for
-Schleife nicht erlaubt ist. Der Code entfernte nur die erste Übereinstimmung und stoppte dann.
Also habe ich einen Weg gefunden, dies mit einer anderen Liste zu tun:
%Vor%Es funktioniert, aber meine Eingeweide sagen mir, dass es vielleicht einen eleganteren Weg gibt. Jetzt muss eine andere Liste zum Speichern des Namens gelöscht werden. Irgendwelche Ideen?
Sie können den Ausdruck Listenverständnis mithilfe von all()
Filter als:
In Bezug auf Ihre Aussage:
Natürlich funktionierte das nicht, weil das Entfernen von Elementen aus der Liste beim Iterieren mit einer for-Schleife nicht erlaubt ist. Der Code entfernte nur die erste Übereinstimmung und stoppte dann.
Sie könnten die Kopie der Liste wie folgt durchlaufen haben:
%Vor% Verwenden Sie os.path.basename
, um den Basisnamen von Pfadnamen zu erhalten. Verwenden Sie die integrierte Funktion all
, um zu überprüfen, ob der Basisname nicht in% co_de enthalten ist %.
Tags und Links python list list-comprehension