請問現在有一個A list和一個B list,每個list中都有100個整數,我想計算得出一個新的c list, c list中的每項是這樣的,A[0],,A[1]+B[0],,A[2]+B[1]+B[0],,A[3]+B[2]+B[1]+B[0]...............A[100]+B[99]+B[98]+B[97]+.......B[1]+B[0],,,,求大神解答?給個簡單的例子吧,假如A = [30,52,84,92],,,B = [4,3,2,1],,,我現在想得到Clist [30,56,91,101]。30即A[0],56即A[1]+B[0],以此類推,但是我現在有很多數據,遠遠超過4個,所以求大神給個程序。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
3 回答
已采納

qq_青棗工作室_0
TA貢獻446條經驗 獲得超754個贊
A?=?[30,52,84,92] B?=?[4,3,2,1] C?=?[] for?i?in?range(len(A)): ????C.append(A[i]?+?sum(B[0:i])) print?C

清波
TA貢獻165條經驗 獲得超90個贊
既然有人給出, 循環求解 和 列表生成式求解了, 那我就給出另一種解吧:?
強大的BIF
A?=?[30,52,84,92] B?=?[4,3,2,1] C?=?map(lambda?x:x[1]+sum(b[0:x[0]]),enumerate(a)) ##?Python?3.x?需要對?map?函數?列表化(不建議對map?類型列表化,?否則官方就白白升級map函數了): C?=?list(map(lambda?x:x[1]+sum(b[0:x[0]]),enumerate(a)))
最后,糾正 提供列表生成式 解答的一點bug, 如果 A 列表中 有重復的元素, 用 A.index(a) 來獲取元素的 index 是錯誤的, 所以建議 列表生成式求解 這么寫:
c?=?[value+sum(b[0:index])?for?index,value?in?enumerate(a)]
我猜 這個才是這個問題的最優解,也許比 map 更快,懶得測試了,有興趣的同學可以試試。

qq_咖啡丶彼岸_03525439
TA貢獻1條經驗 獲得超0個贊
# 樓上正解, 我再給個邪門歪道(要確保listA中的元素不重復才行)
A?=?[30,52,84,92] B?=?[4,3,2,1] print?[a+sum(B[0:A.index(a)])?for?a?in?A]?????#?[30,?56,?91,?101]
添加回答
舉報
0/150
提交
取消