Angesichts der Liste ['a','ab','abc','bac']
, ich möchte eine Liste mit Zeichenfolgen, die 'ab'
in ihnen haben. I.e. das Ergebnis ist ['ab','abc']
. Wie kann das in Python gemacht werden?Filtern einer Liste von Strings basierend auf dem Inhalt
Antwort
Diese einfachen Filterung kann in vielerlei Hinsicht mit Python erreicht werden. Der beste Ansatz ist "Listenkomprehensionen" wie folgt zu verwenden:
>>> lst = ['a', 'ab', 'abc', 'bac']
>>> res = [k for k in lst if 'ab' in k]
>>> res
['ab', 'abc']
>>>
Eine andere Möglichkeit ist es, die filter
Funktion zu verwenden:
>>> filter(lambda k: 'ab' in k, lst)
['ab', 'abc']
>>>
-1: Lambda. Bitte fügen Sie Lambda auf n00bs nicht hinzu. –
@ S.Lott: warum? Was ist falsch daran, nützliche fortgeschrittene Programmthemen in einem geeigneten Kontext zu lernen? –
@Edi Bendersky: Weil sie verwirrender als nützlich sind? Weil es zu Fragen führt, die mit "def def" beantwortet werden? Weil es selten zu etwas Besserem als Code-Golf führt? Ich weiß nicht, sie scheinen mir nutzlos, nach 30 Jahren Programmierung in einer Vielzahl von Sprachen. Aber ich denke, dass sie dir wirklich wichtig sind. –
[x for x in L if 'ab' in x]
Sie gewinnen um 48 Sekunden :-) –
dies in der interaktiven Shell schnell Ausprobiert:
>>> l = ['a', 'ab', 'abc', 'bac']
>>> [x for x in l if 'ab' in x]
['ab', 'abc']
>>>
Warum funktioniert das? Weil die in
operator für Zeichenfolgen definiert ist, bedeutet: "ist Teilzeichenfolge von".
Auch sollten Sie die Schleife Schreiben aus zu betrachten, im Gegensatz zu den list comprehension syntax verwendet, um oben:
l = ['a', 'ab', 'abc', 'bac']
result = []
for s in l:
if 'ab' in s:
result.append(s)
mylist = ['a', 'ab', 'abc']
assert 'ab' in mylist
# To support matches from the beginning, not any matches:
list = ['a', 'ab', 'abc', 'bac']
prefix = 'ab'
filter(lambda x: x.startswith(prefix), list)
- 1. Filtern einer Liste basierend auf optionalen Parameterwerten
- 2. Filtern einer Liste basierend auf einer anderen Liste C#
- 3. Filtern der in OpenFileDialog angezeigten Dateien basierend auf dem Inhalt?
- 4. Pythonic Weg eine Liste von Strings aus einer anderen Liste von Strings zu filtern
- 5. Filtern einer Zeichenfolge basierend auf der Wortzahl
- 6. Filtern basierend auf @me
- 7. Webseite Spracherkennung basierend auf dem Inhalt
- 8. Liste erhalten von basierend auf einer anderen Liste
- 9. Prolog: Filtern einer Liste?
- 10. Filter Strings von Regex in einer Liste
- 11. Wie filtern Sie eine Liste basierend auf 2 Eigenschaften?
- 12. Python - Extrahieren einer Liste von Sub-Strings
- 13. Filtern von JSON basierend auf Wert
- 14. Wie mache ich Buttons interactible = false basierend auf dem Inhalt einer Liste?
- 15. Filtern von NSMutableArray basierend auf enum-Eigenschaft
- 16. Filtern von Ordnerdateien basierend auf Datum
- 17. Filtern von Objekteigenschaften basierend auf Wert
- 18. Bearbeiten von Elementen einer Liste von Tupeln basierend auf Hammingabstands
- 19. Maximum von Element von Liste basierend auf dem anderen
- 20. Filtern eines Panda Datenrahmen basierend auf dem Wert und Zeit
- 21. Wie kann ich Inhalt auf meiner Seite basierend auf dem ausgewählten Wert einer HtmlHelper DropDownList ändern?
- 22. Textgröße ändernFeld basierend auf Inhalt
- 23. Entfernen von Zeichenfolgen aus einer Python-Liste basierend auf Hammingdistanz
- 24. Edit CSS auf einem div basierend auf dem Inhalt in
- 25. underscore.js filtern ein Array von Objekten, basierend auf einem anderen
- 26. Bedingte innere Verknüpfung basierend auf dem Inhalt der primären Tabelle
- 27. Concatenate SQL-Strings basierend auf
- 28. Abrufen von Tweets basierend auf dem Namen der Twitter-Liste
- 29. Sortieren einer Liste von numAlpha Strings
- 30. Wie reduziere ich den Inhalt einer Liste basierend auf den Werten der anderen Liste?
dank Eli Bendersky –
die Liste [‘Gegeben a ',' b ',' c ',' a ',' b '], ich möchte eine Liste mit Strings berechnen, die' a 'und' b 'enthalten. I.e. Das Ergebnis ist ['a', 'b']. Wie kann das in Python gemacht werden? –