Python: lista anidada en tupla de valor único

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)) 
Producción :

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)) 
Producción :

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *