Учитывая список ['a','ab','abc','bac']
, Я хочу вычислить список со строками, которые имеют 'ab'
в них. Т.е. результат ['ab','abc']
. Как это может быть сделано в Python?
Эта простая фильтрация может быть достигнута во многих отношениях с 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']
>>>
# To support matches from the beginning, not any matches:
items = ['a', 'ab', 'abc', 'bac']
prefix = 'ab'
filter(lambda x: x.startswith(prefix), items)
Быстро попробовал это в интерактивной оболочке:
>>> 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)