python - 房屋强盗 - Python 语法

标签 python

我的问题是为什么以下语法会为 house robber 生成正确答案:

last, now = 0, 0
for element in nums:
    last, now = now, max(last + element, now)
return now

vs 相同的东西,但不是内联的:

last, now = 0, 0
for element in nums:
    last = now
    now = max(last + element, now)
return now

我希望它们应该相同。不过,我(在第二个片段中)查到了这一点,但它给了我错误的答案。例如:在数组 [3, 5, 3] 中,我对第二个代码片段给出的答案是 11 - 它会不断添加内容。

我显然遗漏了一些有关 python 内联功能的信息。有没有人可以提供一些见解?谢谢。

最佳答案

您的两段代码之间的区别在于,在第一个示例中您有一个 赋值,而在第二个示例中您有两个连续 赋值。

last, now = now, max(last + element, now) 行是一个赋值语句。右侧构建了一个包含两个元素的 tuple,然后在一个步骤中将其分配给运算符左侧的两个lvalues(即两个变量)的元组。

然而,last = nownow = max(last + element, now) 行是连续完成的,即。 e.第一个分配首先发生,然后是第二个(受第一个影响)。

最小的例子:

a = 4
b = 3
a, b = b, a  # → a will be 3, b will be 4

对比

a = 4
b = 3
a = b  # → a will be 3
b = a  # → b will be 3 as well

关于python - 房屋强盗 - Python 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48079442/

相关文章:

python - 将整数添加到列表中所有非整数元素

Python itertools.groupby 多个值

python - 减少大型分类变量的级别数

在加载/导入时执行的 Python 装饰器

python - python中的回文迭代检查器

python - OpenCV:getOptimalNewCameraMatrix()-newImgSize参数吗?

python - 使用 XPath 在使用 python 的 <td> 单元格中获取文本

python - 正则表达式 - 查找 @ 之后和特定字符之前的文本

python - Django Pandas AWS

python - 使用 PyMC 3 进行 Probit 回归