如果我有一个包含多个列表的列表(为简单起见3,但实际上我的数量非常大):
list = [[1,a,2],[3,b,4],[5,c,6]]
如何使用Python获取基于其位置组合原始列表项的新列表?
new_list = [[1,3,5],[a,b,c],[2,4,6]]
我一直在尝试“列表”上的zip功能,但它不起作用,我做错了什么?
答案 0 :(得分:2)
这就是你想要的。
mylist = [[1,"a",2],[3,"b",4],[5,"c",6]]
mylist2 = list(map(list, zip(*mylist)))
请不要使用列表或任何其他built-in作为变量名称。
list(map(list, zip(*mylist)))
*mylist -- unpacks the list
zip(*mylist) -- creates an iterable of the unpacked list,
with the i-th element beeing a tuple
containing all i-th elements of each element of *mylist
list -- Is the built-in function list()
map( f , iter ) -- Applys a function f to all elements of an iterable iter
list( ) -- Creates a list from whatever is inside.
答案 1 :(得分:1)
您可以使用zip:
a = 1
b = 2
c = 3
l = [[1,a,2],[3,b,4],[5,c,6]]
new_l = list(map(list, zip(*l)))
输出:
[[1, 3, 5], [1, 2, 3], [2, 4, 6]]
请注意,变量现在显示在new_l
答案 2 :(得分:0)