首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python列表中交换的意外行为

python列表中交换的意外行为
EN

Stack Overflow用户
提问于 2018-07-06 03:58:32
回答 2查看 37关注 0票数 -2

在这里,我想在索引的帮助下交换给定列表中的4和2,因此我编写了以下代码。

代码语言:javascript
复制
>>>arr = [4,3,1,2]
>>> arr[0] , arr[arr[0]-1] = arr[arr[0]-1] ,arr[0]
>>> arr
[2, 4, 1, 2]

如您所见,上面的代码给出了一个意外的输出。预期产量为2,3,1,4。

但是当我写成

代码语言:javascript
复制
>>>arr = [4,3,1,2]
>>>index = arr[0] - 1
>>>arr[0] , arr[index] = arr[index] ,arr[0]
>>>arr
[2, 3, 1, 4]

输出结果不出所料。

为什么会这样呢?

编辑:是的,还有其他方法可以交换第一个和最后一个元素。我有必要选择这种方法,之后我发现了这种不正常的行为。对此我还没有找到任何解释

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-06 04:01:32

代码语言:javascript
复制
arr[0], arr[-1] = arr[-1], arr[0]

显然,这两个元组是从左到右并行求值的,LHS元组的第二个元素的求值是在更改为第一个元素之后排序的,因此将第一个元素分配给LHS元组会导致甚至不同的引用成为它的第二个元素。

票数 0
EN

Stack Overflow用户

发布于 2018-07-06 04:01:43

Python中的后向索引应以-num形式给出

代码语言:javascript
复制
>>> arr = [4,3,1,2]
>>> arr[0] , arr[-1] = arr[-1] ,arr[0]
>>> arr
[2, 3, 1, 4]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51198983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档