Angesichts der Liste ['a','ab','abc','bac']
möchte ich eine Liste mit Zeichenfolgen berechnen, die 'ab'
darin enthalten sind. Dh das Ergebnis ist ['ab','abc']
. Wie geht das in Python?
93
Diese einfache Filterung kann mit Python auf viele Arten erreicht werden. Der beste Ansatz besteht darin, "Listenverständnis" wie folgt zu verwenden:
>>> lst = ['a', 'ab', 'abc', 'bac']
>>> [k for k in lst if 'ab' in k]
['ab', 'abc']
Eine andere Möglichkeit besteht darin, die filter
Funktion zu verwenden. In Python 2:
>>> filter(lambda k: 'ab' in k, lst)
['ab', 'abc']
In Python 3 wird anstelle einer Liste ein Iterator zurückgegeben , aber Sie können ihn umwandeln:
>>> list(filter(lambda k: 'ab' in k, lst))
['ab', 'abc']
Es ist jedoch besser, ein Verständnis zu verwenden.
lambda
der perfekte Begleiterfilter
? Ich denke, dass das Schreiben einer separaten Funktion nur zum Überprüfen, ob sieab
in der angegebenen Liste enthalten ist, ein Overkill ist. Schreiben Sie also eine allgemeinere Funktion, die denin
Operator grundsätzlich umschließt . Wie würden Siefilter
ohnelambda
hier klarer verwenden ?quelle
quelle
Versuchte dies schnell in der interaktiven Shell:
Warum funktioniert das? Weil der
in
Operator so definiert ist, dass Zeichenfolgen bedeuten: "ist Teilzeichenfolge von".Möglicherweise möchten Sie auch die Schleife ausschreiben, anstatt die oben verwendete Listenverständnis-Syntax zu verwenden:
quelle
quelle