Dada una lista de listas, escriba un programa en Python para contar el número de sublistas que contienen el elemento x dado .
Ejemplos:
Input : lst = [1, 3, 5], [1, 3, 5, 7], [1, 3, 5, 7, 9]] x = 1 Output : 3 Input : lst = (['a'], ['a', 'c', 'b'], ['d']) x = 'a' Output : 2
Enfoque n.º 1: enfoque ingenuo
Cuente el número de listas que contienen x . Inicialice el conteo a 0, luego inicie un ciclo for y verifique si x existe en cada lista o no. Si es así, incremente el conteo .
# Python3 Program to count number of # list containing a certain element # in a list of lists def countList(lst, x): count = 0 for i in range(len(lst)): if x in lst[i]: count+= 1 return count # Driver Code lst = (['a'], ['a', 'c', 'b'], ['d']) x = 'a' print(countList(lst, x))
2
Enfoque #2: Comprensión de lista (alternativa para ingenuo)
Una simple comprensión de lista de una sola línea también puede hacer el trabajo simplemente convirtiendo el enfoque Naive mencionado anteriormente en un bucle for de una sola línea.
# Python3 Program to count number of # list containing a certain element # in a list of lists def countList(lst, x): return sum(x in item for item in lst) # Driver Code lst = (['a'], ['a', 'c', 'b'], ['d']) x = 'a' print(countList(lst, x))
2
Enfoque #3: Usar chain.from_iterable()
yCounter
Podemos usar Contador para contar en cuántas listas aparece ‘x’. Dado que no queremos contar ‘x’ más de una vez para cada lista interna, convertiremos cada lista interna en conjuntos. Después de esto, une esos conjuntos de elementos en una secuencia usando chain.from_iterable()
.
# Python3 Program to count number of # list containing a certain element # in a list of lists from itertools import chain from collections import Counter def countList(lst, x): return Counter(chain.from_iterable(set(i) for i in lst))[x] # Driver Code lst = (['a'], ['a', 'c', 'b'], ['d']) x = 'a' print(countList(lst, x))
2
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