Dada una tupla y una lista como entrada, escriba un programa Python para contar las ocurrencias de todos los elementos de la lista en la tupla. Ejemplos:
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
Enfoque #1: Enfoque Ingenuo El primer enfoque es el enfoque ingenuo. Use un bucle for y recorra la lista dada y cuente la aparición de cada elemento de la tupla en una lista. Finalmente, devuelve el conteo.
Python3
# 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
Enfoque n.º 2: Usando el módulo Counter From Python Collections, importe el contador para resolver el problema dado. Un contador es un contenedor que realiza un seguimiento de cuántas veces se agregan valores equivalentes. Habiendo guardado el resultado en ‘recuentos’, usamos un bucle for y contamos cuántas veces aparece cada elemento de la lista en ‘recuentos’ y lo sumamos para obtener el resultado final.
Python3
# 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
Enfoque n.º 3: uso de conjuntos Otro método para resolver el problema dado es usar una estructura de datos establecida. Simplemente convierta la lista dada en un conjunto, que elimina todos los duplicados. Y ahora, para cada elemento de la lista, cuente su aparición en tuplas y súmelos.
Python3
# 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
Enfoque n.º 4: usar el diccionario de Python Obtenga cada elemento de la tupla y su frecuencia como par clave:valor en el diccionario de Python, luego use un bucle for, para cada elemento de la lista, cuente su aparición en la tupla y súmelos.
Python3
# 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
Enfoque #5: Python numpy.in1d() Python numpy nos da un método directo para encontrar la solución para el problema dado, y es numpy.in1d(). Este método prueba si cada elemento de una array 1-D también está presente en una segunda array. Dado que list también es una array 1-D, este método se puede aplicar aquí.
Python3
# 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
Enfoque #6: Usar los métodos list() y count()
Python3
# Python3 Program to count occurrence # of all elements of list in a tuple tup = ('a', 'a', 'c', 'b', 'd') lst = ['a', 'b'] x=list(tup) c=0 for i in lst: c+=x.count(i) print(c)
3
Publicación traducida automáticamente
Artículo escrito por Smitha Dinesh Semwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA