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))
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))
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))
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