假設我有A=[2,4, 3 ,1],我想通過在每一步中跳過一個元素來計算內部元素的總和。我嘗試的是:
s=[ ]
a=0
for i in range(len(A)):
for j in range(len(A)):
if i==j:
continue
else :
a =A[j]
s.append(a)
當我列印結果時,s我得到了
print(s)
s=[8, 14, 21, 30]
我想要的是:
s=[ 8, 6, 7, 9]
在哪里
8=4 3 1 我們跳過
A[0]
6=2 3 1 我們跳過A[1]
7=2 4 1 我們跳過A[2]
9=2 4 3 我們跳過A[3]
uj5u.com熱心網友回復:
如何計算總和然后回傳減去每個專案的總和,使用串列理解?
sum_a = sum(A)
output = [sum_a - a for a in A]
print(output) # [8, 6, 7, 9]
uj5u.com熱心網友回復:
該if陳述句已經在跳過一次迭代,因此您需要的只是重復初始化。您可以通過a在外部回圈內部而不是外部重新初始化 sum 變數 ( ) 來實作此目的。
A = [2, 4, 3, 1]
s = []
for i in range(len(A)):
a = 0
for j in range(len(A)):
if i == j:
continue
else:
a = A[j]
s.append(a)
print(s)
輸出:
[8, 6, 7, 9]
uj5u.com熱心網友回復:
我喜歡@j1-lee 的答案,但這里有一個漂亮的單行變體:
output = [sum(A) - a for a in A]
uj5u.com熱心網友回復:
您可以從切片構建一個新串列,排除不需要的值,然后求和
[sum(A[:i] A[i 1:]) for i in range(len(A))]
或者,由于sum可以自行添加結果,請使用 2 個切片
[sum(A[:i]) sum(A[i 1:]) for i in range(len(A))]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/336427.html
上一篇:簡單回圈python“for”
下一篇:“for”回圈的單線?
