Python |计算元组中列表所有元素的出现次数
原文:https://www . geesforgeks . org/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))
Output:
3
方法 2 : 从 Python Collections 模块中使用计数器 ,导入计数器来解决给定的问题。计数器是一个容器,用于记录等值被添加的次数。将结果保存在“计数”中后,我们使用 for 循环,计算列表中的每个项目在“计数”中出现的次数,并对其求和以给出最终输出。
# 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))
Output:
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))
Output:
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))
Output:
3
进场# 5:Pythonnumpy.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))
Output:
3
版权属于:月萌API www.moonapi.com,转载请注明出处