使用Python检查列表中是否存在多个字符串

2024-05-10 01:22:37 发布

您现在位置:Python中文网/ 问答频道 /正文

如何测试另一个列表中是否存在多个字符串?下面是一个代码示例,我刚开始使用,但不能正常工作。即使在列表中找到字符串的一部分,它也应该返回true。在

我在评论中标出了结果应该返回的内容。正如你所看到的,他们都失败了。在

def all_exist(avalue, bvalue):
    if avalue == []:
        return True
    else:
        print (all(x in avalue for x in bvalue))

items = ['greg','krista','marie']
all_exist(['greg', 'krista'], items) # true
all_exist(['gre', 'kris'], items) # true
all_exist(['gre', 'purple'], items) # false

将第二个列表转换为单个字符串,然后测试列表中是否存在字符串,这样会更好吗?在


Tags: 字符串代码intrue示例列表评论items
2条回答

我们要循环遍历avalue中的元素,并检查该元素是否在bvalue中的任何字符串中。但是我们希望在all内完成所有这些,因为我们要检查avalue中的all元素是否匹配。在

另外,如果我们这样做测试,空的avalue无论如何都会返回True,所以我们不需要告诉Python显式地这样做。在

注意:既然您已经将all_exist定义为function,它实际上应该是return一个值,而不是{}结果,所以我为您更改了它:

def all_exist(avalue, bvalue):
    return all(any(i in j for j in bvalue) for i in avalue)

一些测试表明它是有效的:

^{pr2}$

您必须检查第一个列表中的所有字符串是否包含在第二个列表中的任何字符串中:

def all_exist(avalue, bvalue):
    return all(any(x in y for y in bvalue) for x in avalue)

items = ['greg','krista','marie']
print(all_exist(['greg', 'krista'], items)) # -> True
print(all_exist(['gre', 'kris'], items))    # -> True
print(all_exist(['gre', 'purple'], items))  # -> False
print(all_exist([], items))                 # -> True

相关问题 更多 >