如何在Python中比较两个列表并计算所有匹配项?

如何在Python中比较两个列表并计算所有匹配项?,python,python-3.x,list,Python,Python 3.x,List,我有两个字符串列表。我想比较列表1和列表2中的所有项目,然后计算匹配项。以下是我尝试过的: count = 0 global_fruit = ['apples', 'bananas', 'pears', 'oranges', 'peaches', 'apricots', 'mangoes'] local_fruit = ['bananas', 'apricots', 'oranges'] if any(f in global_fruit for f in local_fruit): coun

我有两个字符串列表。我想比较列表1和列表2中的所有项目,然后计算匹配项。以下是我尝试过的:

count = 0

global_fruit = ['apples', 'bananas', 'pears', 'oranges', 'peaches', 'apricots', 'mangoes']
local_fruit = ['bananas', 'apricots', 'oranges']

if any(f in global_fruit for f in local_fruit):
count += 1

print(count)
这将返回计数1,因为脚本在第二个列表中找到第一个匹配项后立即退出。我希望它返回计数3,因为列表之间有三个匹配项


有办法做到这一点吗?顺序并不重要。

您可以使用
sum
而不是
any
,并立即获得结果:

count = 0

global_fruit = ['apples', 'bananas', 'pears', 'oranges', 'peaches', 'apricots', 'mangoes']
local_fruit = ['bananas', 'apricots', 'oranges']

count = sum(f in global_fruit for f in local_fruit)

print(count)
此外,您还可以将列表转换为集合,并找到交叉点的数量:

count = 0

global_fruit = ['apples', 'bananas', 'pears', 'oranges', 'peaches', 'apricots', 'mangoes']
global_fruit = set(global_fruit)
local_fruit = ['bananas', 'apricots', 'oranges']
local_fruit = set(local_fruit)

count = len(global_fruit.intersection(local_fruit))
print(count)
试试这个:

global_fruit = ['apples', 'bananas', 'pears', 'oranges', 'peaches', 'apricots', 'mangoes']
local_fruit = ['bananas', 'apricots', 'oranges']

print(len(local_fruit) - len(set(local_fruit) - set(global_fruit)))

len(set(全局水果)和set(本地水果))两个答案都有效,但第一个答案非常适合我的需要。谢谢你,还有来自komatiraju032的答案。我的帐户是全新的,所以你不会看到更新投票,但它们在那里。欢迎使用堆栈溢出。没有任何解释的代码转储很少有帮助。堆栈溢出是关于学习,而不是提供盲目复制和粘贴的代码片段。请回答您的问题,并解释它如何比OP提供的更好地工作。看见
global_fruit = ['apples', 'bananas', 'pears', 'oranges', 'peaches', 'apricots', 'mangoes']
local_fruit = ['bananas', 'apricots', 'oranges']
count=0 
for a in global_fruit:
    if(a in local_fruit):
        count+=1
print(count)