📜  Python|在多列表中对相同索引处的元素进行分组

📅  最后修改于: 2022-05-13 01:55:18.635000             🧑  作者: Mango

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