Python | Cuente las sublistas que contienen el elemento dado en una lista

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))
Producción:

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))
Producción:

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))
Producción:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *