Python 交叉赋值


(声明:本教程仅供本人学习使用,如有人使用该技术触犯法律与本人无关)
(如果有错误,还希望指出。共同进步)


加深Pthon赋值运算基础

两个变量之间的赋值

a = 10
b = 5
a, b = b, a


# a = 5
# b = 10

两个列表赋值


a = ['a', 'a', 'a']
b = ['b', 'b', 'b']
a, b = b, a


# a = ['b', 'b', 'b']
# b = ['a', 'a', 'a']

那部分赋值呢?

a[:2], b[:2] = b[:2], a[:2]


# a = ['b', 'b', 'a']
# b = ['a', 'a', 'b']


# 为什么?
# 因为程序总是先执行完 “ = ” 右边的结果后, 再赋值给左边

部分修改为整体?可行?

a[:2], b[:2] = a, b


# a = ['a', 'a', 'a', 'a']
# b = ['b', 'b', 'b', 'b']

a, b 位置互换后成立吗?

a[:2], b[:2] = b, a


# a = ['b', 'b', 'b', 'a']
# b = ['b', 'b', 'b', 'a', 'b']


## 为什么?????
# 右边运算结束后, 会依次执行左边 (从左向右) 的赋值
# (1)  a [:2] = b
# (2)  b[:2] = a (此时的a已经赋值完毕, 成为一个新的a)

证明例子一

a[:2], b[:2] = b[:1], a


# a = ['b', 'a']
# b = ['b', 'a', 'b']

证明例子二


a[:2], b[:2] = b[:2], a[:2]


# a = ['b', 'b', 'a']
# b = ['a', 'a', 'b']

总结分析

a[:2], a[2:], b[:2], b[2:] = b[:2], b[2:], a[:2], a[2:]
# (左1) (左2)  (左3)  (左4)
# 等价于 #
a, b = b, a

从上述可以看出,程序的执行顺序

1、执行等号右边的截取操作
2、左边第一个元素先截取, 将右边的值赋值
3、左边第二个元素截取, 右边的值赋值

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值