[英]Adding certain elements of list of lists together, keeping others intact
有一些列表形式的数据。 所以例如:
[[2.94, 0.389, 0.167, -2.75], [1.74, -0.211, -0.474, -1.37], 1.091753800499324]
我想创建一个新列表,该列表由上面列表的前两个元素组合在一起,第三个元素完好无损。 例如
[[4.68, 0.17800000000000002, -0.30699999999999994, -4.12], 1.091753800499324]
已经尝试了很多方法来 go 添加它们,但在不干扰列表的最后一个元素的情况下无法正确处理。
你可以这样做:
data = [[2.94, 0.389, 0.167, -2.75], [1.74, -0.211, -0.474, -1.37], 1.091753800499324]
new_data = [[sum(x) for x in zip(data[0], data[1])]] + [data[-1]]
new_data
[[4.68, 0.17800000000000002, -0.30699999999999994, -4.12], 1.091753800499324]
或者更一般地说,如果您有超过 2 个列表要求和并且总是希望将最后一个元素排除在外:
new_data = [[sum(x) for x in zip(*data[:-1])]] + [data[-1]]
new_data
[[4.68, 0.17800000000000002, -0.30699999999999994, -4.12], 1.091753800499324]
data[:-1]
[[2.94, 0.389, 0.167, -2.75], [1.74, -0.211, -0.474, -1.37]]
zip(*data[:-1])
与zip(data[0], data[1], data[2], ..., data[n-1])
相同zip(*data[:-1])
<zip at 0x1b4b93673c8>
要查看内容,您应该传递一个list
:
list(zip(*data[:-1]))
[(2.94, 1.74), (0.389, -0.211), (0.167, -0.474), (-2.75, -1.37)]
如您所见,元素两两配对,产生一个元组列表。
[sum(x) for x in zip(*data[:-1])]
[4.68, 0.17800000000000002, -0.30699999999999994, -4.12]
[data[-1]]
将最后一个元素作为一个列表获取:[[sum(x) for x in zip(*data[:-1])]] + [data[-1]]
[[4.68, 0.17800000000000002, -0.30699999999999994, -4.12], 1.091753800499324]
您可以使用 zip
output_list = []
input_list = [[2.94, 0.389, 0.167, -2.75], [1.74, -0.211, -0.474, -1.37], 1.091753800499324]
nested_list1 = input_list[0]
nested_list2 = input_list[1]
add_list = []
for element1, element2 in zip(nested_list1, nested_list2):
add_list.append(element1 + element2)
output_list.append(add_list)
output_list.append(input_list[2])
print(output_list)
lst=[[2.94, 0.389, 0.167, -2.75], [1.74, -0.211, -0.474, -1.37], 1.091753800499324]
q=len(lst[0])
w=len(lst[1])
for i in range(max(q,w)):
if i==q:
for j in range(i,w):
lst[0].append(lst[1][j])
break
if i==w:
break
lst[0][i]=lst[0][i]+lst[1][i]
del lst[1]
print(lst)
# this code should work even if first and second element is of different length
像这样?
in_data = [[2.94, 0.389, 0.167, -2.75], [1.74, -0.211, -0.474, -1.37], 1.091753800499324]
out_data = [x+y for (x,y) in zip(in_data[0], in_data[1])] + [in_data[2]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.