如何从所有列表中获取第一个元素,又从所有列表中获取第二个元素,依此类推。想象一下,列表中有列表
lst = [[3942, 3969, 3078], [1111, 1664, 1565], [4367, 4600, 3486], [1562, 1957, 2061]]
如何获取列表的所有第一个元素并将其更改为列表中所有元素的元组。
我尝试过list = [list [0] for list in list],但它只给我每个列表的第一个元素。
预期输出
[(3942,1111,4367,1562),(3969,1664,4600,1957),(3078,1565,3486,2061)]
答案 0 :(得分:1)
根据您的需要,我认为一种可能的解决方案是将其解析为2D数组并找到其转置。
import numpy as np
ll = [[3942, 3969, 3078],
[1111, 1664, 1565],
[4367, 4600, 3486],
[1562, 1957, 2061]]
llt = np.transpose(ll)
new_tuple_list = [tuple(l) for l in llt]
答案 1 :(得分:1)
另一种方法
from operator import itemgetter
test = [[3942, 3969, 3078], [1111, 1664, 1565], [4367, 4600, 3486], [1562, 1957, 2061]]
result = []
for i in range(0, len(test) - 1):
result.append(tuple(map(itemgetter(i), test)))
print(result)
答案 2 :(得分:0)
您不能将“列表”用作变量,因为它是关键字。无论如何,您可以执行以下操作:
lit = [[3942, 3969, 3078], [1111, 1664, 1565], [4367, 4600, 3486]]
n = len(lit[0])
final_li = []
for i in range(0,n):
new_li = [lit[i]for lit in lit]
final_li.append(new_li)
print(final_li)
答案 3 :(得分:0)
就像马克所指出的那样简单:
temp = list(zip(*lst))
返回
[(3942, 1111, 4367, 1562), (3969, 1664, 4600, 1957), (3078, 1565, 3486, 2061)]
有关更多信息,请参见Python的zip()。