Python|在多列表中对相同索引处的元素进行分组
将 2D 列表展平为一个是许多领域面临的常见问题。但有时我们需要将特定索引处的元素配对为一个,以便各个索引处的元素在一起。这个问题并不常见,但仍有解决方案有所帮助。
让我们讨论在特定索引处配对元素的某些方法。
方法 #1:使用列表理解 + zip()
列表理解可用于完成此特定任务以及 zip函数,该函数执行将相似索引配对在一起的任务。这种方法只是朴素方法的简写。
# Python3 code to demonstrate
# index list elements pairing
# using list comprehension
# initializing list
test_list = [[1, 4, 5], [4, 6, 8], [8, 3, 10]]
# printing original list
print ("The original list is : " + str(test_list))
# using list comprehension
# to perform index list elements pairing
res = [list(x) for x in zip(*test_list)]
# printing result
print ("The index elements pairs list is " + str(res))
输出:
The original list is : [[1, 4, 5], [4, 6, 8], [8, 3, 10]]
The index elements pairs list is [[1, 4, 8], [4, 6, 3], [5, 8, 10]]
方法 #2:使用map() + zip()
map
函数可用于将每个迭代结果映射到单个列表中,而zip
函数执行索引元素配对。这种组合可用于实现所需的结果。
# Python3 code to demonstrate
# index list elements pairing
# using map() + zip()
# initializing list
test_list = [[1, 4, 5], [4, 6, 8], [8, 3, 10]]
# printing original list
print ("The original list is : " + str(test_list))
# using map() + zip()
# to perform index list elements pairing
res = list(map(list, zip(*test_list)))
# printing result
print ("The index elements pairs list is " + str(res))
输出:
The original list is : [[1, 4, 5], [4, 6, 8], [8, 3, 10]]
The index elements pairs list is [[1, 4, 8], [4, 6, 3], [5, 8, 10]]
方法#3:使用zip()
仅使用zip
函数就可以完成所有工作,只需将其类型转换为列表即可以列表格式打印结果。这是执行此任务的最 Pythonic 的方式,也是最优雅的方式。
# Python3 code to demonstrate
# index list elements pairing
# using zip()
# initializing list
test_list = [[1, 4, 5], [4, 6, 8], [8, 3, 10]]
# printing original list
print ("The original list is : " + str(test_list))
# using zip()
# to perform index list elements pairing
res = list(zip(*test_list))
# printing result
print ("The index elements pairs list is " + str(res))
输出:
The original list is : [[1, 4, 5], [4, 6, 8], [8, 3, 10]]
The index elements pairs list is [(1, 4, 8), (4, 6, 3), (5, 8, 10)]