鱼C论坛

 找回密码
 立即注册
查看: 1022|回复: 10

[已解决]赋值问题

[复制链接]
发表于 2020-5-21 16:01:13 | 显示全部楼层 |阅读模式

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

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

x
各位大神!
您们好!

我有一个小小的问题想请教一下~
为什么

temp = member[0]
member[0]=member[1]
member[1]=temp


这三行代码就可以把一个列表中,第一个元素和第二个元素互换位置呢?

我是认为  既然temp已经等于member[0]了,而且member[0]=member[1],那为什么还可以换位置呢?不太懂~  求解!
感谢各位大神指导~
最佳答案
2020-5-21 16:03:41
本帖最后由 青出于蓝 于 2020-5-21 16:17 编辑

这个并不是互换位置,而是赋值。
将temp赋值为member[0],也就是temp的值等于member.
再将member[0]=member[1].这个时候看起来列表中的两个数都一样了。
最后再将member[1]赋值为temp,而temp就是原来的member[0],所以,我们开来,就是换了位置。


也就是说,并不是位置互换,而是数值互换

member=[1,2]
temp = member[0]           #temp赋值为1
member[0]=member[1]        #member[0]赋值为2
member[1]=temp             #再将member[1]赋值为temp(也就是1)
上面例子,原本member是[1,2].现在,赋值后,就变成了[2,1]
帮助到的话给个最佳~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-21 16:03:41 | 显示全部楼层    本楼为最佳答案   
本帖最后由 青出于蓝 于 2020-5-21 16:17 编辑

这个并不是互换位置,而是赋值。
将temp赋值为member[0],也就是temp的值等于member.
再将member[0]=member[1].这个时候看起来列表中的两个数都一样了。
最后再将member[1]赋值为temp,而temp就是原来的member[0],所以,我们开来,就是换了位置。


也就是说,并不是位置互换,而是数值互换

member=[1,2]
temp = member[0]           #temp赋值为1
member[0]=member[1]        #member[0]赋值为2
member[1]=temp             #再将member[1]赋值为temp(也就是1)
上面例子,原本member是[1,2].现在,赋值后,就变成了[2,1]
帮助到的话给个最佳~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-21 16:06:48 | 显示全部楼层
本帖最后由 Twilight6 于 2020-5-21 16:12 编辑


假设 :


member = [1,2,3,4,5]
则:
member[0]
>>>1
temp = member[0]    # 即 temp = 1 就是取个临时变量记下这个元素

member[1]
>>>2
member[0]  = member[1]      # 因为这个是将member的第一个参数 重新赋值为 member[1]的值 即 2

member[1] = temp          # 这边将member的第二个元素 重新赋值 temp的值 即 1


这样就达到了互换位置的效果,实际上是被重新赋值了


还有一种更简单的方法:

member = [1,2,3,4,5]
member[0],member[2] = member[2],member[0]
member
>>>[3,2,1,4,5]

如果帮助到你啦~记得给个最佳把~

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-21 16:07:53 | 显示全部楼层
你当你学数学呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-21 16:09:08 | 显示全部楼层

蕾姆的回答为何总是如此简单
难道是因为看到2,3楼觉得自己没希望了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-21 16:10:40 | 显示全部楼层
老八秘制 发表于 2020-5-21 16:09
蕾姆的回答为何总是如此简单
难道是因为看到2,3楼觉得自己没希望了吗


强行补充一波

楼上都说完了,我也没啥好说的了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-21 16:13:04 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-21 16:10
强行补充一波

楼上都说完了,我也没啥好说的了

哈哈   

评分

参与人数 1荣誉 +1 收起 理由
永恒的蓝色梦想 + 1 嘿嘿

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-21 16:15:05 | 显示全部楼层
这么看比较简单:

把member[0]指向临时存储,

把member[1]指向menber[0]原来的位置,

最后把temp指向member[1]原来的位置(temp现在存的是member[0])。

所以二者就互换了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-21 20:17:56 | 显示全部楼层
青出于蓝 发表于 2020-5-21 16:03
这个并不是互换位置,而是赋值。
将temp赋值为member[0],也就是temp的值等于member.
再将member[0]=memb ...

我不太懂的是   member【0】 在第二行已经被赋值为  member[1]的值了   为什么 temp里的member[0]还是原来的值呢?它不会变成最新被赋值的值吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 10:52:50 | 显示全部楼层
pythongirl 发表于 2020-5-21 20:17
我不太懂的是   member【0】 在第二行已经被赋值为  member[1]的值了   为什么 temp里的member[0]还是原 ...

temp最先被赋值为member[0],这时member还没有被赋值为member【1】,因为是先赋值的temp,后赋值的member【0】,所以,temp是赋值前的member【0】,赋值后不会改变。
有问题可以继续提问喔~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-23 14:26:22 | 显示全部楼层
青出于蓝 发表于 2020-5-22 10:52
temp最先被赋值为member[0],这时member还没有被赋值为member【1】,因为是先赋值的temp,后赋值的member ...

好的   那我理解了~  谢谢拉~  感觉一看到这种就头晕   感觉理不清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-17 04:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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