python - 这个语句 block 在 Python 中究竟做了什么?

标签 python

<分区>

我是 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 .通过添加 best = max(best, cur) 进行修复内部 for 循环上方的行。

关于python - 这个语句 block 在 Python 中究竟做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10582331/

相关文章:

python - 在 PyObjc 和 Cocoa 中实现 NSText 委托(delegate)方法

python - 如何在 Python 中打印指定列宽的列表?

python - Mac 10.6 通用二进制 scipy : cephes/specfun "_aswfa_" symbol not found

python - 运行时范围和 `main` 符号在函数内部或外部不同

python - 如何要求登录 Django 通用 View ?

python - 使用 scipy.optimize.minimize 使用固定参数

python - 在 PySpark 上将日期时间转换为日期

Python、geopy杀死时间限制

python - 如何计算 50x20 矩阵的类内散布

python - 在Python中: how to see the attributes of a 'property object' ?