Python:在另一个lis中查找一个列表元素的计数

2024-04-25 11:45:58 发布

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

假设我有两个列表list1list2作为:

list1 = [ 3, 4, 7 ]
list2 = [ 5, 2, 3, 5, 3, 4, 4, 9 ]

我想找到list1中存在的元素的计数。

预期输出为4,因为来自list1的3和4在list2中出现两次。因此,总数为4。


Tags: 元素列表计数总数list2list1
3条回答

你可以在这里使用collections.Counter,所以首先是一个天真而丑陋的实现(我的)。

list1 = [ 3, 4, 7 ]
list2 = [ 5, 2, 3, 5, 3, 4, 4, 9 ]
from collections import Counter
total = 0 
c = Counter(list2)
for i in list1: 
  if c[i]: 
    total += c[i]

这并没有考虑到如果在第一个列表中有重复项(HT Jon)会发生什么,更优雅的版本是:

counter = Counter(list2)
occurrences = sum(counter[v] for v in set(list1))

使用列表理解并检查元素是否存在

c =  len([i for i in list2 if i in list1 ])

来自@Jon i.e的更好的一个

c = sum(el in list1 for el in list2)

输出:4

您可以使用count方法将给定数字的first列表和add发生次数迭代到sum

for number in list1: 
   s += list2.count(number);

相关问题 更多 >