A veces, mientras trabajamos con datos de Python, podemos tener problemas en los que necesitamos convertir listas anidadas de Python en tuplas de valores únicos. Este tipo de problema puede tener aplicaciones en dominios como el desarrollo web y la programación competitiva. Analicemos ciertas formas en que se puede realizar esta tarea.
Entrada : test_list = [[5, 6], [4, 7, 10, 17]]
Salida : [(5, ), (6, ), (4, ), (7, ), (10, ), ( 17, )]Entrada : test_list = [[5, 6, 7, 8]]
Salida : [(5, ), (6, ), (7, ), (8, )]
Método n.º 1: Uso de la comprensión de listas (para anidamiento único)
Esta es una de las formas en que se puede realizar esta tarea. Iteramos cada lista interna y convertimos cada elemento como una tupla separada. Esto atiende solo a una sola anidación.
# Python3 code to demonstrate working of # Convert Nested List to 1 value Tuple # Using list comprehension # initializing list test_list = [[5, 6], [4, 7, 10], [12], [9, 11]] # printing original list print("The original list is : " + str(test_list)) # Convert Nested List to 1 value Tuple # Using list comprehension res = [(ele, ) for sub in test_list for ele in sub] # printing result print("The converted container : " + str(res))
The original list is : [[5, 6], [4, 7, 10], [12], [9, 11]] The converted container : [(5, ), (6, ), (4, ), (7, ), (10, ), (12, ), (9, ), (11, )]
Método #2: Usando isinstance()
+ recursividad
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, realizamos la tarea de aplanar y convertir usando isinstance() y recursividad para atender también el caso de anidamiento aleatorio.
# Python3 code to demonstrate working of # Convert Nested List to 1 value Tuple # Using isinstance() + recursion # helper_fnc def hlper_fnc(test_list): res = [] if isinstance(test_list, list): for ele in test_list: res.extend(hlper_fnc(ele)) elif isinstance(test_list, int): res.append((test_list, )) return res # initializing list test_list = [[5, [6]], [4, 7, [10, 45]], [12], [9, 11]] # printing original list print("The original list is : " + str(test_list)) # Convert Nested List to 1 value Tuple # Using isinstance() + recursion res = hlper_fnc(test_list) # printing result print("The converted container : " + str(res))
The original list is : [[5, [6]], [4, 7, [10, 45]], [12], [9, 11]] The converted container : [(5, ), (6, ), (4, ), (7, ), (10, ), (45, ), (12, ), (9, ), (11, )]
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