鱼C论坛

 找回密码
 立即注册
查看: 1556|回复: 6

关于数组内元素位置交换的问题

[复制链接]
发表于 2018-2-3 23:31:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位大神,Python的数组操作如下:
Question.png
关于语句:
name[1],name[3]=name[3],name[1]
这个问题,我不太明白。一般常规交换都会有一个中间值,为什么上面的操作没有中间值,就可以对位置进行交换呢?是什么原理。
请大神们解答。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-3 23:49:40 | 显示全部楼层
这相当于2元元组取反而已
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-4 00:27:32 | 显示全部楼层
本帖最后由  sunjue1989 于 2018-2-4 00:30 编辑
塔利班 发表于 2018-2-3 23:49
这相当于2元元组取反而已


那是不是可以这样理解:
name[1],name[3] = name[3],name[1]
红色是一个整体,然后将粉色的整体赋值给黑色的整体?
也就是说
(元组1)=(元组2)?
但是元组不是不允许直接进行更新吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-4 07:22:42 | 显示全部楼层
sunjue1989 发表于 2018-2-4 00:27
那是不是可以这样理解:
name[1],name[3]  = name[3],name[1]
红色是一个整体,然后将粉色的整体赋值 ...

这是列表,不是元祖,谢谢。
相当于左边的第一个=右边的第一个
左边的第二个=右边的第二个
相当于代码:
  1. temp = name[1]
  2. name[1] = name[3]
  3. name[3] = temp
复制代码

temp是中间量
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2018-2-4 09:01:27 | 显示全部楼层
sunjue1989 发表于 2018-2-4 00:27
那是不是可以这样理解:
name[1],name[3]  = name[3],name[1]
红色是一个整体,然后将粉色的整体赋值 ...

是的,元组支持整体赋值更新

任意无符号的对象,以逗号隔开,默认为元组,

python的机制只不过换了2个变量的指向地址

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-4 15:31:16 | 显示全部楼层
两个元祖交叉赋值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-4 19:58:58 | 显示全部楼层
新手·ing 发表于 2018-2-4 07:22
这是列表,不是元祖,谢谢。
相当于左边的第一个=右边的第一个
左边的第二个=右边的第二个

他说的是对的,这叫元组的封装与拆封,还记得吗,看见逗号就想到元组
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-27 18:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表