我的问题是,为什么下面的语法会产生房屋抢劫犯的正确答案:
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:keepin数组,答案是3:keepin。你知道吗
很明显,我遗漏了python的内联功能。有人能提供一些见解吗?谢谢您。你知道吗
两段代码之间的区别在于,在第一个示例中,您有一个赋值,而在第二个示例中,您有两个连续的赋值。你知道吗
第
last, now = now, max(last + element, now)
行是一个赋值语句。右侧构建一个由两个元素组成的tuple
,然后在一个步骤中分配给操作符左侧两个左值的元组(即两个变量)。你知道吗然而,行
last = now
和now = max(last + element, now)
是彼此连续进行的,即第一个赋值首先发生,然后是第二个赋值(受第一个赋值的影响)。你知道吗最小示例:
与
在第一段代码中,您可以同时更改变量
last
和now
,使用=
的右侧的旧值:在第二个代码段中,首先更改
last
,然后更改now
,从而使用更改的last
:在第一个代码中,这两个值都是从先前的值
last
和now
更新而来的。你知道吗在第二段代码中,首先更新
last
,然后用新值继续计算(以前是now
)。你知道吗相关问题 更多 >
编程相关推荐