给定列表['a','ab','abc','bac'],我想计算一个包含其中字符串的列表'ab'.即结果是['ab','abc'].如何在Python中完成?
Eli*_*sky 124
使用Python可以通过多种方式实现这种简单的过滤.最好的方法是使用"列表推导"如下:
>>> lst = ['a', 'ab', 'abc', 'bac']
>>> res = [k for k in lst if 'ab' in k]
>>> res
['ab', 'abc']
>>>
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用该filter功能:
>>> filter(lambda k: 'ab' in k, lst)
['ab', 'abc']
>>>
Run Code Online (Sandbox Code Playgroud)
Ita*_*man 11
# To support matches from the beginning, not any matches:
items = ['a', 'ab', 'abc', 'bac']
prefix = 'ab'
filter(lambda x: x.startswith(prefix), items)
Run Code Online (Sandbox Code Playgroud)
在交互式 shell 中快速尝试了这一点:
>>> l = ['a', 'ab', 'abc', 'bac']
>>> [x for x in l if 'ab' in x]
['ab', 'abc']
>>>
Run Code Online (Sandbox Code Playgroud)
为什么这样做?因为in运算符是为字符串定义的,意思是:“是”的子串。
此外,您可能需要考虑写出循环,而不是使用上面使用的列表理解语法:
l = ['a', 'ab', 'abc', 'bac']
result = []
for s in l:
if 'ab' in s:
result.append(s)
Run Code Online (Sandbox Code Playgroud)