Python | Intercalar varias listas de la misma longitud

Listas dadas de la misma longitud, escriba un programa Python para almacenar elementos alternativos de listas dadas en una nueva lista. Analicemos ciertas formas en que esto se puede realizar. Método n.° 1: Uso de map() + comprensión de lista map() se usa para manejar el intercalado de listas y la tarea de inserción en alternativa se realiza mediante la parte de comprensión de lista del código abreviado. Solo funciona en Python 2. 
 

Python

# Python2 code to demonstrate
# to interleave lists
# using map() + list comprehension
 
# initializing lists
test_list1 = [1, 4, 5]
test_list2 = [3, 8, 9]
 
# printing original lists
print ("Original list 1 : " + str(test_list1))
print ("Original list 2 : " + str(test_list2))
 
# using map() + list comprehension
# to interleave lists
res = [i for j in map(None, test_list1, test_list2)
          for i in j if i is not None]
 
# printing result
print ("The interleaved list is : " + str(res))
Producción:

Original list 1 : [1, 4, 5]
Original list 2 : [3, 8, 9]
The interleaved list is : [1, 3, 4, 8, 5, 9]

  Método n.º 2: uso de la segmentación de listas La potencia de la segmentación de listas de python también se puede utilizar para realizar esta tarea en particular. Primero extendemos una lista a otra y luego permitimos que la lista original tenga índices alternativos deseados de la lista resultante. 

Python3

# Python3 code to demonstrate
# to interleave lists
# using list slicing
 
# initializing lists
test_list1 = [1, 4, 5]
test_list2 = [3, 8, 9]
 
# printing original lists
print ("Original list 1 : " + str(test_list1))
print ("Original list 2 : " + str(test_list2))
 
# using list slicing
# to interleave lists
res = test_list1 + test_list2
res[::2] = test_list1
res[1::2] = test_list2
 
# printing result
print ("The interleaved list is : " + str(res))
Producción:

Original list 1 : [1, 4, 5]
Original list 2 : [3, 8, 9]
The interleaved list is : [1, 3, 4, 8, 5, 9]

  Método n.º 3: usar itertools.chain() + zip() zip() se puede usar para vincular ambas listas y luego chain() se puede usar para realizar la adición alternativa de los elementos según se desee. Este es el método más eficiente para realizar esta tarea. 
 

Python3

# Python3 code to demonstrate
# to interleave lists
# using zip() + itertools.chain()
import itertools
 
# initializing lists
test_list1 = [1, 4, 5]
test_list2 = [3, 8, 9]
 
# printing original lists
print ("Original list 1 : " + str(test_list1))
print ("Original list 2 : " + str(test_list2))
 
# using zip() + itertools.chain()
# to interleave lists
res = list(itertools.chain(*zip(test_list1, test_list2)))
 
# printing result
print ("The interleaved list is : " + str(res))
Producción:

Original list 1 : [1, 4, 5]
Original list 2 : [3, 8, 9]
The interleaved list is : [1, 3, 4, 8, 5, 9]

Los tres enfoques tienen la misma complejidad de tiempo y espacio:

Complejidad de tiempo: O(n)

Espacio Auxiliar: O(n)

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 *