📌  相关文章
📜  Python|计算元组中列表的所有元素的出现次数

📅  最后修改于: 2022-05-13 01:55:23.195000             🧑  作者: Mango

Python|计算元组中列表的所有元素的出现次数

给定一个元组和一个列表作为输入,编写一个Python程序来计算元组中列表中所有项目的出现次数。

例子:

Input : tuple = ('a', 'a', 'c', 'b', 'd')
        list = ['a', 'b']
Output : 3 

Input : tuple = (1, 2, 3, 1, 4, 6, 7, 1, 4)
        list = [1, 4, 7]
Output : 6


方法#1:朴素的方法

第一种方法是幼稚的方法。使用 for 循环并遍历给定列表并计算列表中每个元组项的出现次数。最后,返回计数。

# Python3 Program to count occurrence 
# of all elements of list in a tuple
from collections import Counter
  
def countOccurrence(tup, lst):
    count = 0
    for item in tup:
        if item in lst:
            count+= 1
      
    return count 
      
# Driver Code
tup = ('a', 'a', 'c', 'b', 'd')
lst = ['a', 'b']
print(countOccurrence(tup, lst))
输出:
3


方法#2:使用计数器
从Python Collections 模块,导入计数器来解决给定的问题。计数器是一个容器,用于跟踪添加等效值的次数。将结果保存在 'counts' 中后,我们使用 for 循环并计算列表中每个项目在 'counts' 中出现的次数,并将其相加得到最终输出。

# Python3 Program to count occurrence 
# of all elements of list in a tuple
from collections import Counter
  
def countOccurrence(tup, lst):
    counts = Counter(tup)
    return sum(counts[i] for i in lst)
      
# Driver Code
tup = ('a', 'a', 'c', 'b', 'd')
lst = ['a', 'b']
print(countOccurrence(tup, lst))
输出:
3


方法#3:使用集合
解决给定问题的另一种方法是使用集合数据结构。只需将给定列表转换为集合,即可删除所有重复项。现在,对于列表中的每一项,计算它在元组中出现的次数并将它们相加。

# Python3 Program to count occurrence 
# of all elements of list in a tuple
  
def countOccurrence(tup, lst):
    lst = set(lst)
    return sum(1 for x in tup if x in lst)
      
# Driver Code
tup = ('a', 'a', 'c', 'b', 'd')
lst = ['a', 'b']
print(countOccurrence(tup, lst))
输出:
3


方法 #4:使用Python字典
获取元组的每个项目及其频率作为Python字典中的键:值对,然后使用 for 循环,对于列表的每个项目,计算其在元组中的出现并将它们相加。

# Python3 Program to count occurrence 
# of all elements of list in a tuple
  
def countOccurrence(tup, lst):
    dct = {}
    for i in tup:
        if not dct.get(i):
            dct[i] = 0
        dct[i] += 1
    return sum(dct.get(i, 0) for i in lst)
      
# Driver Code
tup = ('a', 'a', 'c', 'b', 'd')
lst = ['a', 'b']
print(countOccurrence(tup, lst))
输出:
3


方法#5: Python numpy.in1d()
Python numpy 为我们提供了一种直接的方法来找到给定问题的解决方案,那就是numpy.in1d() 。此方法测试一维数组的每个元素是否也存在于第二个数组中。由于 list 也是一维数组,因此可以在此处应用此方法。

# Python3 Program to count occurrence 
# of all elements of list in a tuple
import numpy as np
  
def countOccurrence(tup, lst):
    return np.in1d(tup, lst).sum()
      
# Driver Code
tup = ('a', 'a', 'c', 'b', 'd') 
lst = ['a', 'b']
print(countOccurrence(tup, lst))
输出:
3