我有以下功能检查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 a
和c
。虽然c
被发现两次,但它不应该有所作为。
我该怎么做?
答案 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