以下行似乎不起作用:
(count, total) += self._GetNumberOfNonZeroActions((state[0] + x, state[1] - ring, state[2]))
我想在这种情况下不可能使用 += 运算符。我想知道为什么?
编辑:实际上我想要的是添加到变量计数和总计由该函数返回的元组给出的值。现在我想起来了,允许 (a, b) += (1, 2) 是没有意义的,因为它会创建一个新的元组,对吧?
换句话说,有没有办法简化这个?
res = self._GetNumberOfNonZeroActions((state[0] + x, state[1] + ring, state[2]))
count, total = res[0], res[1]
最佳答案
您的观察是正确的:a += b
对于任何 a 和 b 意味着与 a = a + b
相同(除了它可能会保存对 a 的一次评估).所以如果 a
是一个元组,那么唯一可以 +=
的是另一个元组;如果 a
是一个临时的未命名元组,那么 +=
当然是不可观察的——Python 通过将这种特殊情况捕获为语法错误来帮助您解决问题。在 += 之前,您需要给元组一个名称(或其他可重新分配的引用)...:
>>> thetup = (a, b)
>>> thetup += (1, 2)
>>> thetup
(23, 45, 1, 2)
如果语法 (a, b) += (1, 2)
被接受,它当然必须暗示相同的功能......但没有任何可能的可观察方法来检查附加实际上发生了,这真的没有任何意义。幸好语法不被接受,因此!-)
关于python - 不可能在 python 中执行 (a, b) += (1, 2)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1871786/