Python|交错多个相同长度的列表
给定相同长度的列表,编写一个Python程序将给定列表的替代元素存储在一个新列表中。
让我们讨论可以执行此操作的某些方式。
方法 #1:使用map() + list comprehension
map()
用于处理列表的交错,交替插入的任务由简写代码的列表理解部分执行。仅适用于Python 2。
# 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]
方法#2:使用列表切片
Python的列表切片功能也可用于执行此特定任务。我们首先将一个列表扩展到另一个列表,然后让原始列表成为结果列表的所需备用索引。
# 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]
方法#3:使用itertools.chain() + zip()
zip()
可用于链接两个列表,然后chain()
可用于根据需要执行元素的备用附加。这是执行此任务的最有效方法。
# 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]