计算在字符串中找到的子串数

时间:2017-03-24 12:03:26

标签: python

我有以下功能检查b中是否存在a中的任何字符串。这很好用。

a = "a b c d c"
b = ["a", "c", "e"]

if any(x in a for x in b):
    print True
else:
    print False

我想修改它,告诉我b中找到a中有多少字符串,在本例中为2 ac 。虽然c被发现两次,但它不应该有所作为。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

只需将any更改为sum

即可
print(sum(x in a for x in b))  # prints 2

以下是它的工作原理:

>>> [x in a for x in b]
[True, True, False]
>>> t = [x in a for x in b]
>>> sum(t)  # sum() is summing the True values here
2

答案 1 :(得分:0)

可以使用sum(map(lambda x: 1 if x in a else 0, b))sum([1 if x in a else 0 for x in b])

来完成此操作

答案 2 :(得分:0)

这会做你想要的:

def anycount(it):
    return len([e for e in it if e])

a = "a b c d c"
b = ["a", "c", "e"]

print (anycount(x in a for x in b))
2