¿Cómo comprimir dos listas de listas en Python?

La función zip normal nos permite la funcionalidad de agregar los valores en un contenedor. Pero a veces, tenemos un requisito en el que necesitamos tener varias listas y listas que contienen como elementos de índice y necesitamos fusionarlos/comprimirlos juntos. Este es un problema bastante poco común, pero la solución aún puede ser útil. Analicemos ciertas formas en las que se puede idear una solución. 

Método #1: Usar map() + __add__ Este problema se puede resolver usando la función map con la operación de suma. La función map realiza un tipo de función similar a la función zip y, en este caso, puede ayudar a llegar a una solución. 

Python3

# Python3 code to demonstrate
# zipping lists of lists
# using map() + __add__
 
# initializing lists
test_list1 = [[1, 3], [4, 5], [5, 6]]
test_list2 = [[7, 9], [3, 2], [3, 10]]
 
# printing original lists
print ("The original list 1 is : " + str(test_list1))
print ("The original list 2 is : " + str(test_list2))
 
# using map() + __add__
# zipping lists of lists
res = list(map(list.__add__, test_list1, test_list2))
     
# printing result
print ("The modified zipped list is : " +  str(res))

Producción :

The original list 1 is : [[1, 3], [4, 5], [5, 6]]
The original list 2 is : [[7, 9], [3, 2], [3, 10]]
The modified zipped list is : [[1, 3, 7, 9], [4, 5, 3, 2], [5, 6, 3, 10]]

  Método #2: Usar itertools.chain() + zip() Esta combinación de estas dos funciones se puede usar para realizar esta tarea en particular. La función de string se puede utilizar para realizar la agregación entre listas, y la agregación dentro de la lista se realiza mediante la función zip. 

Python3

# Python3 code to demonstrate
# zipping lists of lists
# using map() + __add__
import itertools
 
# initializing lists
test_list1 = [[1, 3], [4, 5], [5, 6]]
test_list2 = [[7, 9], [3, 2], [3, 10]]
 
# printing original lists
print ("The original list 1 is : " + str(test_list1))
print ("The original list 2 is : " + str(test_list2))
 
# using map() + __add__
# zipping lists of lists
res = [list(itertools.chain(*i))
       for i in zip(test_list1, test_list2)]
     
# printing result
print ("The modified zipped list is : " +  str(res))

Producción :

The original list 1 is : [[1, 3], [4, 5], [5, 6]]
The original list 2 is : [[7, 9], [3, 2], [3, 10]]
The modified zipped list is : [[1, 3, 7, 9], [4, 5, 3, 2], [5, 6, 3, 10]]

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 *