我正在嘗試串列元素的總和。我必須添加串列的相鄰元素并創建一個新串列并重復該程序,直到我得到最后一個元素作為答案。我能夠解決長度小于 5 的串列,但我無法概括任何給定串列的解決方案。幫我解決這個問題。下面是我的起始代碼:這是示例; 問題的一般示例
lst=[]
n=int(input())
for i in range(0,n):
num = int(input())
lst.append(num)
print(lst)
sum1=[]
for i in range(1,len(lst)):
sum=i i 1
sum1.append(sum)
print(sum1)
uj5u.com熱心網友回復:
以下似乎相當簡單:
n = int(input())
lst = [int(input()) for _ in range(n)]
while len(lst) > 1:
lst[:] = map(sum, zip(lst, lst[1:])) # all sums of neighbours
print(lst)
# Output for 1 2 3 4
# [3, 5, 7]
# [8, 12]
# [20]
一些檔案:
zipmapsum
uj5u.com熱心網友回復:
給定 2 個長度相等的串列,您可以這樣做:
M = [1,2,3]
N = [5,6,7]
print(*map(sum, zip(M,N)))
uj5u.com熱心網友回復:
一個簡單易懂的函式:
def solve(seq):
while len(seq) > 1:
res = []
for i in range(len(seq) - 1):
res.append(seq[i] seq[i 1])
print(res)
seq = res
return res[0]
solve([1,2,3,4])
這個想法是找到相鄰的總和并存盤在一個新串列中。繼續這樣做,直到長度變為 1。
如果邏輯對某人來說很清楚,可以添加一些更高階的函式魔法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/322324.html
上一篇:根據相鄰的差異值將串列分組
