python list 交换赋值的问题

今天写程序的时候总是和自己预想的结果不一致,最终定位到这行代码。

情况如下:

先定义一个list

lis = [4,1,3,1,3,5,5]

 

设定 i = 0

 

那么这个语句之后 lis 会变成什么样

 

lis[i], lis[lis[i]] = lis[lis[i]], lis[i]

 

开始我以为 lis[i] = 4

 

所以 相当于 list[0], list[4] = list[4], list[0]

 

lis 会变成 

[3, 1, 3, 1, 4, 5, 5]

 

但是!! 结果是这样 

[3, 1, 3, 4, 3, 5, 5]

 

结果可以看出 lis[i] = lis[lis[i]] 这条成功赋值了

 

但是 lis[lis[i]] = lis[i] 这里有问题,应该是lis[i]此时已经变成可3 而不是原来的 4了,就是说

 

前面的赋值影响了它。

 

那么我们定义 temp = list[i]

 

lis[i], lis[temp] = lis[temp], lis[i]

 

结果回归正常。

 

所以猜测是 只有当运行到赋值的那条语句时才会计算 lis[i] 这个值,并且,左边的会比右边的先赋值,所以才能影响到。

 

未完待续。。。等我弄明白原理回来补充

 

 

 

 

 

转载于:https://www.cnblogs.com/winder-knight/p/9837643.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值