Python: extrae tuplas que tienen elementos de K dígitos

Dada una lista de tuplas, extraiga todas las tuplas que tengan elementos de K dígitos.

Entrada : test_list = [(54, 2), (34, 55), (222, 23), (12, 45), (78, )], K = 2 
Salida : [(34, 55), (12, 45), (78,)] 
Explicación : Todas las tuplas tienen números de 2 dígitos.

Entrada : test_list = [(54, 2), (34, 55), (222, 23), (12, 45), (782, )], K = 3 
Salida : [(782,)] 
Explicación : Todas las tuplas Tener números de 3 dígitos. 

Método #1: Usando all() + comprensión de lista

En esto, verificamos que cada elemento sea de K dígitos convirtiéndolo en una string y verificando su longitud. all() se usa para verificar si todos los elementos tienen un tamaño similar.

Python3

# Python3 code to demonstrate working of
# Extract K digit Elements Tuples
# Using all() + list comprehension
 
# initializing list
test_list = [(54, 2), (34, 55), (222, 23), (12, 45), (78, )]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing K
K = 2
 
# using len() and str() to check length and
# perform string conversion
res = [sub for sub in test_list if all(len(str(ele)) == K for ele in sub)]
 
# printing result
print("The Extracted tuples : " + str(res))

Producción:

La lista original es: [(54, 2), (34, 55), (222, 23), (12, 45), (78,)] Las tuplas extraídas: [(34, 55), (12, 45) ), (78,)]

Método #2: Usar all() + filter() + lambda

Esto es similar al método anterior, la diferencia es filter() y lambda se usa para resolver el problema del filtrado.

Python3

# Python3 code to demonstrate working of
# Extract K digit Elements Tuples
# Using all() + filter() + lambda
 
# initializing list
test_list = [(54, 2), (34, 55), (222, 23), (12, 45), (78, )]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing K
K = 2
 
# filter() and lambda used for task of filtering
res = list(filter(lambda sub: all(len(str(ele)) == K for ele in sub), test_list))
 
# printing result
print("The Extracted tuples : " + str(res))

Producción:

La lista original es: [(54, 2), (34, 55), (222, 23), (12, 45), (78,)] Las tuplas extraídas: [(34, 55), (12, 45) ), (78,)]

Método #3: Usar los métodos list(), map(), str() y len()

Convertir cada elemento de la tupla en una string y convertir esa tupla en una lista después de iterar sobre la lista para encontrar la longitud de cada elemento y agregarla a una nueva lista. Si la nueva lista es [K, K] o [K], entonces las tuplas tienen K elementos de dígitos.

Python3

# Python3 code to demonstrate working of
# Extract K digit Elements Tuples
 
# initializing list
test_list = [(54, 2), (34, 55), (222, 23), (12, 45), (78, )]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initialising K
K = 2
 
res=[]
for i in test_list:
    x=list(map(str,i))
    p=[]
    for j in x:
        p.append(len(j))
    if(p==[K,K] or p==[K]):
        res.append(i)
     
# printing result
print("The Extracted tuples : " + str(res))
Producción

The original list is : [(54, 2), (34, 55), (222, 23), (12, 45), (78,)]
The Extracted tuples : [(34, 55), (12, 45), (78,)]

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 *