我有一個這樣的清單
A = [[0.8922063, 0.26672425],
[0.34475611, 0.35976697],
[0.33253499, 0.18923898],
[0.66872466, 0.46248986],
[0.72823733, 0.10537784],
[0.40903598, 0.70639412],
[0.79926596, 0.90095583],
[0.67886544, 0.84573289],
[0.3641813, 0.64296743],
[0.07461196, 0.74290527]]
這是串列串列的組合
我還有另一個清單
p = [5,4,2]
我需要對P對應的串列A的元素求和,即A的前5個子串列的總和,然后是接下來的4個(第6到9個)子串列的總和,最后是最后2個的總和子串列。
uj5u.com熱心網友回復:
將您的串列p轉換為您想要的切片串列:
>>> q = [0,5,9,10]
你可以這樣做:
>>> q = [sum(p[:i]) for i in range(len(p) 1)]
然后總結 的切片A:
>>> for i in range(len(q)-1):
listn = sum(sum(x) for x in A[q[i]:q[i 1]])
print(listn)
4.35005729
5.34739895
0.81751723
uj5u.com熱心網友回復:
此函式通過跟蹤我們最后一個切片元素(從 0 開始)并增加索引以使用 p 中的數字來切片,從而回傳 A 中塊的總和串列。
def sum_sublists(list1 : list, list2 : list) -> list:
sums=[]
last_slice = 0
for chunk_size in list2:
next_slice = last_slice chunk_size
sums.append(sum([sum(el) for el in list1[last_slice:next_slice]]))
last_slice = next_slice
return sums
if __name__ == '__main__':
p = [5,4,1]
A = [[0.8922063, 0.26672425],
[0.34475611, 0.35976697],
[0.33253499, 0.18923898],
[0.66872466, 0.46248986],
[0.72823733, 0.10537784],
[0.40903598, 0.70639412],
[0.79926596, 0.90095583],
[0.67886544, 0.84573289],
[0.3641813, 0.64296743],
[0.07461196, 0.74290527],
]
print(sum_sublists(A, p))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/328995.html
