Фильтрация списка строк на основе содержания

Учитывая список ['a','ab','abc','bac'], Я хочу вычислить список со строками, которые имеют 'ab' в них. Т.е. результат ['ab','abc']. Как это может быть сделано в Python?

75
задан giampaolo 30 March 2016 в 10:23
поделиться

5 ответов

Эта простая фильтрация может быть достигнута во многих отношениях с Python. Лучший подход - использовать «список потенциалов» следующим образом:

>>> lst = ['a', 'ab', 'abc', 'bac']
>>> res = [k for k in lst if 'ab' in k]
>>> res
['ab', 'abc']
>>> 

Другой способ - использовать фильтр :

>>> filter(lambda k: 'ab' in k, lst)
['ab', 'abc']
>>> 
124
ответ дан 24 November 2019 в 11:35
поделиться
# To support matches from the beginning, not any matches:

items = ['a', 'ab', 'abc', 'bac']
prefix = 'ab'

filter(lambda x: x.startswith(prefix), items)
11
ответ дан 24 November 2019 в 11:35
поделиться

Быстро попробовал это в интерактивной оболочке:

>>> l = ['a', 'ab', 'abc', 'bac']
>>> [x for x in l if 'ab' in x]
['ab', 'abc']
>>>

Почему эта работа? Поскольку Оператор определяется для строк, чтобы означать: «подстроит».

Кроме того, вы, возможно, захотите рассмотреть вопрос о том, чтобы считать синтаксис понимания списка , используемый выше:

l = ['a', 'ab', 'abc', 'bac']
result = []
for s in l:
   if 'ab' in s:
       result.append(s)
4
ответ дан 24 November 2019 в 11:35
поделиться
mylist = ['a', 'ab', 'abc']
assert 'ab' in mylist
0
ответ дан 24 November 2019 в 11:35
поделиться
[x for x in L if 'ab' in x]
16
ответ дан 24 November 2019 в 11:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: