Python | Eliminar tuplas vacías de una lista

En este artículo, veremos cómo podemos eliminar una tupla vacía de una lista de tuplas dada. Encontraremos varias formas en las que podemos realizar esta tarea de eliminar tuplas usando varios métodos y formas en Python. Ejemplos:

Input : tuples = [(), ('ram','15','8'), (), ('laxman', 'sita'), 
                  ('krishna', 'akbar', '45'), ('',''),()]
Output : [('ram', '15', '8'), ('laxman', 'sita'), 
          ('krishna', 'akbar', '45'), ('', '')]

Input : tuples = [('','','8'), (), ('0', '00', '000'), 
                 ('birbal', '', '45'), (''), (),  ('',''),()]
Output : [('', '', '8'), ('0', '00', '000'), ('birbal', '', 
          '45'), ('', '')]

Método 1: Usando el concepto de Comprensión de Listas 

Python3

# Python program to remove empty tuples from a
# list of tuples function to remove empty tuples
# using list comprehension
def Remove(tuples):
    tuples = [t for t in tuples if t]
    return tuples
 
# Driver Code
tuples = [(), ('ram','15','8'), (), ('laxman', 'sita'),
          ('krishna', 'akbar', '45'), ('',''),()]
print(Remove(tuples))

Producción:

[('ram', '15', '8'), ('laxman', 'sita'), ('krishna', 
                           'akbar', '45'), ('', '')]

Método 2: Usando el método filter() Usando el método incorporado filter() en Python, podemos filtrar los elementos vacíos pasando None como parámetro. Este método funciona tanto en Python 2 como en Python 3 y superior, pero el resultado deseado solo se muestra en Python 2 porque Python 3 devuelve un generador. filter() es más rápido que el método de comprensión de listas. Veamos qué sucede cuando ejecutamos el programa en Python 2. 

Python

# Python2 program to remove empty tuples
# from a list of tuples function to remove
# empty tuples using filter
def Remove(tuples):
    tuples = filter(None, tuples)
    return tuples
 
# Driver Code
tuples = [(), ('ram','15','8'), (), ('laxman', 'sita'),
          ('krishna', 'akbar', '45'), ('',''),()]
print Remove(tuples)

Producción:

[('ram', '15', '8'), ('laxman', 'sita'), ('krishna', 'akbar', '45'), ('', '')]

Ahora veamos qué sucede cuando intentamos ejecutar el programa en Python 3 y superior. Al ejecutar el programa en Python 3, como se mencionó, se devuelve un generador. 

Python3

# Python program to remove empty tuples from
# a list of tuples function to remove empty
# tuples using filter
def Remove(tuples):
    tuples = filter(None, tuples)
    return tuples
 
# Driver Code
tuples = [(), ('ram','15','8'), (), ('laxman', 'sita'),
          ('krishna', 'akbar', '45'), ('',''),()]
print (Remove(tuples))

Producción:

<filter object at 0x7fe26eb0f3c8>

Método #3: Usar el método len()

Python3

# Python program to remove empty tuples from a
# list of tuples function to remove empty tuples
# using len()
def Remove(tuples):
    for i in tuples:
        if(len(i)==0):
            tuples.remove(i)
    return tuples
# Driver Code
tuples = [(), ('ram','15','8'), (), ('laxman', 'sita'),
        ('krishna', 'akbar', '45'), ('',''),()]
print(Remove(tuples))
Producción

[('ram', '15', '8'), ('laxman', 'sita'), ('krishna', 'akbar', '45'), ('', '')]

Publicación traducida automáticamente

Artículo escrito por Chinmoy Lenka 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 *