Python – Filtra tuplas de elementos consecutivos

Dada una lista de tuplas, filtre las tuplas que están formadas por elementos consecutivos, es decir, la diferencia es 1.

Entrada : test_list = [(3, 4, 5, 6), (5, 6, 7, 2), (1, 2, 4), (6, 4, 6, 3)] Salida : [(3, 4 ) , 5, 6)] Explicación : Solo 1 tupla cumple la condición. Entrada : test_list = [(3, 4, 5, 6), (5, 6, 7, 2), (1, 2, 3), (6, 4, 6, 3)] Salida : [(3, 4 , 5, 6), (1, 2, 3)] Explicación : Solo 2 tuplas cumplen la condición.

Método #1: Usar bucle

En esto, para cada tupla, llamamos utilidad de elementos consecutivos que devuelve True si la tupla es consecutiva.

Python3

# Python3 code to demonstrate working of
# Filter consecutive elements Tuples
# Using loop
 
# hlpr_func
def consec_check(tup):
    for idx in range(len(tup) - 1):
         
        # returns false if any element is not consec.
        if tup[idx + 1] != tup[idx] + 1:
            return False
             
    return True
 
# initializing list
test_list = [(3, 4, 5, 6), (5, 6, 7, 2), (1, 2, 3), (6, 4, 6, 3)]
 
# printing original list
print("The original list is : " + str(test_list))
 
res = []
for sub in test_list:
     
    # calls fnc to check consec.
    if consec_check(sub):
        res.append(sub)
 
# printing result
print("The filtered tuples : " + str(res))
Producción

The original list is : [(3, 4, 5, 6), (5, 6, 7, 2), (1, 2, 3), (6, 4, 6, 3)]
The filtered tuples : [(3, 4, 5, 6), (1, 2, 3)]

Método #2: Usar la comprensión de listas

En esto, realizamos una función similar a la anterior, solo en taquigrafía de una línea utilizando la comprensión de lista.

Python3

# Python3 code to demonstrate working of
# Filter consecutive elements Tuples
# Using list comprehension
 
# hlpr_func
def consec_check(tup):
    for idx in range(len(tup) - 1):
         
        # returns false if any element is not consec.
        if tup[idx + 1] != tup[idx] + 1:
            return False
             
    return True
 
# initializing list
test_list = [(3, 4, 5, 6), (5, 6, 7, 2), (1, 2, 3), (6, 4, 6, 3)]
 
# printing original list
print("The original list is : " + str(test_list))
 
# one-liner to solve problem, using list comprehension
res = [sub for sub in test_list if consec_check(sub)]
 
# printing result
print("The filtered tuples : " + str(res))
Producción

The original list is : [(3, 4, 5, 6), (5, 6, 7, 2), (1, 2, 3), (6, 4, 6, 3)]
The filtered tuples : [(3, 4, 5, 6), (1, 2, 3)]

Publicación traducida automáticamente

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