Was ist die Pythonic Möglichkeit zum filtern einer Reihe?
Ich habe die Liste aus mit Ersatz und ich möchte zwei Dinge tun:
- Duplikate entfernen
- entfernen Sie alle Elemente nach bestimmten Kriterien, um genau zu sein möchte ich entfernen Sie alle Elemente, die größer als ein bestimmter Wert ist.
Ich dachte, ich kann filter verwenden, für 2-und als set zu erreichen 1
so etwas wie
list(set(filter(lambda x:x<C, l)))
gibt es eine bessere/mehr pythonic/effizientere Weg?
- was über Sie bestellen?
- was meinst du?
- Ich meine die Reihenfolge, die Sie Begegnung Elemente, die Sätze sind ungeordnete also, wenn Sie wollen, um irgendeinen Auftrag, den Sie von Glück, mit einer Reihe
- eigentlich in meinem Fall die Reihenfolge spielt keine Rolle
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit list comprehension ist vielleicht mehr "pythonic".
for x in set(lst)
erzeugt ein iterator ist nach dem Gießen, sobald die Liste zu einem Satz, dann ist die Liste Verständnis iteriert Trog und speichert Werte, wennx < C
.list()
. Allerdings, es macht nicht viel Unterschied, es ist bis zu Ihnen.Die besten zwei Möglichkeiten, das zu tun, Sie sind filter:
Oder set Verstehens (was viele denken würden, mehr pythonic, und sogar effizienter):
Aber ich denke, wenn du bist vertraut mit filter,, dass man einfach dabei bleiben.
Meiner Meinung nach die meisten Pythonic way to filter sets, wheevern möglich ist, ist durch die Verwendung von set-Operationen (Venn-Diagramme) :
einem anderen Beispiel, wenn Sie nur wollen, um remove-Wert von 5 einstellen, Eine, die Sie Tippen Sie einfach:
und wie in dieser Frage, wenn Sie brauchen, um einen filter für größere Werte als C geben Sie einfach "containment-check" operator "in", was in der Python-code ausführt, setzt.enthält() magic-Methode (magic-Methode sollte nicht direkt aufgerufen werden, das ist, warum Sie verwenden, "in"):