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))
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