Python – Convertir array de tuplas en lista de tuplas

Dada una array de tuplas, aplanar a la lista de tuplas con cada tupla representando cada columna.

Entrada : test_list = [[(4, 5), (7, 8)], [(10, 13), (18, 17)]]
Salida : [(4, 7, 10, 18), (5, 8) , 13, 17)]
Explicación : Todos los elementos de número de columna contenidos juntos.

Entrada : test_list = [[(4, 5)], [(10, 13)]]
Salida : [(4, 10), (5, 13)]
Explicación : Todos los elementos de número de columna contenidos juntos.

Método n. ° 1: usar la comprensión de listas + zip()

En esto, realizamos la tarea de aplanar usando la comprensión de listas y zip() se usa para realizar el emparejamiento de columnas para representar como pares de tuplas. 

Python3

# Python3 code to demonstrate working of 
# Convert Tuple Matrix to Tuple List
# Using list comprehension + zip()
  
# initializing list
test_list = [[(4, 5), (7, 8)], [(10, 13), (18, 17)], [(0, 4), (10, 1)]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# flattening 
temp = [ele for sub in test_list for ele in sub]
  
# joining to form column pairs
res = list(zip(*temp))
  
# printing result 
print("The converted tuple list : " + str(res))
Producción

The original list is : [[(4, 5), (7, 8)], [(10, 13), (18, 17)], [(0, 4), (10, 1)]]
The converted tuple list : [(4, 7, 10, 18, 0, 10), (5, 8, 13, 17, 4, 1)]

Método #2: Usar chain.from_iterable() + zip()

En esto, la tarea de aplanar se realiza usando chain.from_iterable() y zip() se usa para realizar la tarea de emparejamiento de columnas.

Python3

# Python3 code to demonstrate working of 
# Convert Tuple Matrix to Tuple List
# Using chain.from_iterable() + zip()
from itertools import chain
  
# initializing list
test_list = [[(4, 5), (7, 8)], [(10, 13), (18, 17)], [(0, 4), (10, 1)]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# flattening using from_iterable
res = list(zip(*chain.from_iterable(test_list)))
  
# printing result 
print("The converted tuple list : " + str(res))
Producción

The original list is : [[(4, 5), (7, 8)], [(10, 13), (18, 17)], [(0, 4), (10, 1)]]
The converted tuple list : [(4, 7, 10, 18, 0, 10), (5, 8, 13, 17, 4, 1)]

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 *