我认为两者是相同的。
nums = [1, 2, 0]
nums[nums[0]], nums[0] = nums[0], nums[nums[0]]
print nums # [2, 1, 0]
nums = [1, 2, 0]
nums[0], nums[nums[0]] = nums[nums[0]], nums[0]
print nums # [2, 2, 1]
但是结果是不同的。
为什么结果不同?(为什么第二个结果呢?)
列表的主要部分是列表是可变的。这意味着可以更改列表的值。这就是您遇到麻烦的原因之一。请参阅文档以获取更多信息
另一部分是,在拆开元组的包装时,评估从左到右开始。请参阅文档以获取更多信息
当您执行和a,b = c,d
的值时c
,d
将首先存储它们。然后从左侧开始,将的值a
首先更改为c
,然后将的值b
更改为d
。
这里的要点是,如果b
更改的值时的位置有任何副作用a
,则将d
其分配给 后者 b
,这b
受的副作用影响a
。
现在来解决你的问题
在第一种情况下,
nums = [1, 2, 0]
nums[nums[0]], nums[0] = nums[0], nums[nums[0]]
nums[0]
最初是1
和nums[nums[0]]
是2
因为它的计算结果nums[1]
。因此,现在将1,2存储到内存中。
现在,元组拆包是从左侧开始的,所以
nums[nums[0]] = nums[1] = 1 # NO side Effect.
nums[0] = 2
因此print nums
将打印[2, 1, 0]
但是在这种情况下
nums = [1, 2, 0]
nums[0], nums[nums[0]] = nums[nums[0]], nums[0]
nums[nums[0]], nums[0]
与第一种情况一样,将2,1放在堆栈上。
但是,在左侧,即 nums[0], nums[nums[0]]
的更改nums[0]
有副作用,因为它用作中的索引nums[nums[0]]
。从而
nums[0] = 2
nums[nums[0]] = nums[2] = 1 # NOTE THAT nums[0] HAS CHANGED
nums[1]
价值保持不变2
。因此print nums
将打印[2, 2, 1]
问题内容: 我正在创建一个RESTful Web服务(在Golang中),该服务从数据库中提取一组行并将其返回给客户端(智能手机应用程序或Web应用程序)。该服务需要能够提供分页。唯一的问题是,此数据在定期更改的“计算”列上排序(例如,网站上某内容的“竖起大拇指”或“竖起大拇指”的数量),因此 行可以在在客户的要求之间 。 我看了一些PostgreSQL功能,可以潜在地用来帮助我解决这个问题,但是
问题内容: 我需要能够增加和减少对象中数组元素的位置。 我在MongoDB API中 查看了该API,但找不到任何让我这样做的东西。 我正在尝试使用贯通,并且我知道要向上或向下移动的元素的索引。 编码图像数组项的示例: 我想向上或向下移动“ img2”(但由于无处可去,因此“图像”应该不能向上推)。 如果我想向上推“ img2”,那么结果将是: 通过更改索引,交换或上推/下推来实现此目标都没有关系
我在这个问题上发现了一些类似的问题,但我想再问一遍,以便得到一个更明确的答案。我正在编写一个图匹配算法,其中图上的每个节点分配给一个优先级集,取决于其邻居的匹配。细节其实并不重要,但我使用了std::priority_queue以便首先匹配最高优先级的节点。这里有一个棘手的问题:每次引入一个新的匹配,匹配节点的邻居的优先级将被更新。 我的问题自然是,如何更新新匹配的顺序?我能强制执行吗?或者是否有
-路径:/APP2/** 这意味着与其使用身份验证->路由映射->过滤web处理程序,不如使用路由映射->身份验证->过滤web处理程序。这三个组件并不是不相似,它们中的一个是过滤器,另一个是映射器,最后一个是web处理程序。现在我知道如何自定义它们,但问题是我不知道如何拦截Netty服务器构建过程,以便更改这些操作的顺序。我需要等待构建过程结束,并在开始之前更改服务器的内容。我怎么能那么做?
问题内容: 我有以下元组,其中包含元组: 我想根据内部元组中包含的 第二个 值对该元组进行排序(即对Apple,Carrot,Banana而不是A,B,C进行排序)。 有什么想法吗? 问题答案: 是否:
本节介绍稀疏矩阵的三元组 顺序表压缩存储方式。 通过《 矩阵的压缩存储》一节我们知道,稀疏矩阵的压缩存储,至少需要存储以下信息: 矩阵中各非 0 元素的值,以及所在矩阵中的行标和列标; 矩阵的总行数和总列数; 图 1 稀疏矩阵示意图 例如,图 1 是一个稀疏矩阵,若对其进行压缩存储,矩阵中各非 0 元素的存储状态如图 2 所示: 图 2 稀疏矩阵的压缩存储示意图 图 2 的数组中,存储的是三元组(