Ich habe die folgende Liste

a = [['a', 'b', 1], ['c', 'b', 3], ['c','a', 4], ['a', 'd', 2]]

Und ich versuche, alle Elemente aus der Liste zu entfernen, in der das letzte Element kleiner als 3 ist. Die Ausgabe sollte also so aussehen

a = [['c', 'b', 3], ['c','a', 4]]

Ich habe versucht, Filter folgendermaßen zu verwenden

list(filter(lambda x: x == [_, _, 2], a))

Hier versucht _ zu bezeichnen, dass das Element an diesen Stellen alles sein kann. Ich bin an diese Art von Syntax aus Mathematica gewöhnt, konnte aber in Python so etwas nicht finden (gibt es in Python überhaupt ein solches Symbol?).

Ich würde eine Lösung mit Karte und Filter bevorzugen, da diese für mich am intuitivsten sind.

2
Harto Saarinen 18 Apr. 2018 im 12:20

3 Antworten

Beste Antwort

Sie sollten x[-1] >= 3 in lambda verwenden, um alle Unterlisten mit dem letzten Wert größer oder gleich 3 beizubehalten:

>>> a = [['a', 'b', 1], ['c', 'b', 3], ['c','a', 4], ['a', 'd', 2]]
>>> list(filter(lambda x: x[-1] >= 3, a))
[['c', 'b', 3], ['c', 'a', 4]]
1
Austin 18 Apr. 2018 im 09:24
a = [['a', 'b', 1], ['c', 'b', 3], ['c','a', 4], ['a', 'd', 2]]

Filtern Sie die obige Liste mit Listenverständnis wie:

b = [x for x in a if x[-1] >= 3]
-1
Mohammad Azim 18 Apr. 2018 im 12:39

Listenverständnisansatz:

a_new = [sublist for sublist in a if sublist[-1] >= 3]
0
Jan K 18 Apr. 2018 im 09:25