Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
5年前关闭。
我是python的新手,我遇到了这个特定的代码片段,以计算序列中最大的片段,但是我似乎无法理解以下代码
关于代码如何运行的任何想法,尤其是关于该行的想法,都将有所帮助!
外部的for循环创建越来越大的切片,首先将
在内部循环中,通过将值恰好添加到切片的右边(
最后,将
最后,
编辑:我只是注意到有一个错误:除了切片大小1(
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
5年前关闭。
我是python的新手,我遇到了这个特定的代码片段,以计算序列中最大的片段,但是我似乎无法理解以下代码
best = A[0]
for size in range(1,n+1):
cur = sum(A[:size])
for i in range(n-size):
cur += A[i+size] -= A[i] # <- what happens here?
best = max(best, cur)
关于代码如何运行的任何想法,尤其是关于该行的想法,都将有所帮助!
最佳答案
首先,代码中的错误是额外的=
。工作代码:
n = len(A)
best = A[0]
for size in range(1,n+1):
cur = sum(A[:size])
for i in range(n-size):
cur += A[i+size] - A[i] # <- what happens here?
best = max(best, cur)
外部的for循环创建越来越大的切片,首先将
size
设置为1。然后将cur
设置为size
的前A
个项的总和。在内部循环中,通过将值恰好添加到切片的右边(
A[i+size]
)并减去切片的第一个值(A[i]
),可以将该切片“向右移动”。最后,将
best
设置为新计算出的总和和迄今为止找到的最大值中较大的一个。最后,
best
包含最大的和。除非A
包含负值,否则答案很简单:sum(A)
。编辑:我只是注意到有一个错误:除了切片大小1(
best = A[0]
),最左边的切片不计算在内。因此,如果A = [4, 3, 2]
则输出5
而不是9
。通过在内部for循环上方添加best = max(best, cur)
行来进行修复。关于python - 该语句块在Python中究竟做什么? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10582331/
10-13 03:25