我有一个清单:
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
Run Code Online (Sandbox Code Playgroud)
并希望搜索包含该字符串的项目'abc'.我怎样才能做到这一点?
if 'abc' in my_list:
Run Code Online (Sandbox Code Playgroud)
会检查是否'abc'存在在列表中,但它的一部分'abc-123'和'abc-456','abc'对自己不存在.那么如何获得包含的所有项目'abc'?
Sve*_*ach 832
如果您只想检查abc列表中是否存在任何字符串,您可以尝试
some_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
if any("abc" in s for s in some_list):
# whatever
Run Code Online (Sandbox Code Playgroud)
如果你真的想要获得包含的所有项目abc,请使用
matching = [s for s in some_list if "abc" in s]
Run Code Online (Sandbox Code Playgroud)
fan*_*ous 82
就在这扔在那里:如果你碰巧需要来匹配多个字符串,例如abc和def,你可以把组合两个list解析如下:
matchers = ['abc','def']
matching = [s for s in my_list if any(xs in s for xs in matchers)]
Run Code Online (Sandbox Code Playgroud)
输出:
['abc-123', 'def-456', 'abc-456']
Run Code Online (Sandbox Code Playgroud)
MAK*_*MAK 79
使用filter以获取该具备的要素abc.
>>> lst = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
>>> print filter(lambda x: 'abc' in x, lst)
['abc-123', 'abc-456']
Run Code Online (Sandbox Code Playgroud)
您还可以使用列表推导.
>>> [x for x in lst if 'abc' in x]
Run Code Online (Sandbox Code Playgroud)
顺便说一句,不要将该词list用作变量名,因为它已经用于该list类型.
Rog*_*erS 41
这是最短的方式:
if 'abc' in str(my_list):
Run Code Online (Sandbox Code Playgroud)
Rob*_*uil 18
这是一个相当古老的问题,但我提供了这个答案,因为之前的答案不能处理列表中不是字符串(或某种可迭代对象)的项目.这些项目会导致整个列表理解失败并出现异常.
要通过跳过不可迭代的项目来优雅地处理列表中的此类项目,请使用以下命令:
[el for el in lst if isinstance(el, collections.Iterable) and (st in el)]
Run Code Online (Sandbox Code Playgroud)
那么,有这样一个清单:
lst = [None, 'abc-123', 'def-456', 'ghi-789', 'abc-456', 123]
st = 'abc'
Run Code Online (Sandbox Code Playgroud)
你仍然会得到匹配的项目(['abc-123', 'abc-456'])
可迭代的测试可能不是最好的.从这里得到它:在Python中,我如何确定一个对象是否可迭代?
Mar*_*riy 11
x = 'aaa'
L = ['aaa-12', 'bbbaaa', 'cccaa']
res = [y for y in L if x in y]
Run Code Online (Sandbox Code Playgroud)
Rub*_*con 10
for item in my_list:
if item.find("abc") != -1:
print item
Run Code Online (Sandbox Code Playgroud)
我是 Python 的新手。我让下面的代码工作并使其易于理解:
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
for item in my_list:
if 'abc' in item:
print(item)
Run Code Online (Sandbox Code Playgroud)
使用__contains__()Pythons字符串类的方法:
a = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
for i in a:
if i.__contains__("abc") :
print(i, " is containing")
Run Code Online (Sandbox Code Playgroud)