Python 交叉赋值

Python 交叉赋值

    • 两个变量之间的赋值
    • 两个列表赋值
      • 那部分赋值呢?
      • 部分修改为整体?可行?
      • a, b 位置互换后成立吗?
      • 证明例子一
      • 证明例子二
    • 总结分析


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


加深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、左边第二个元素截取, 右边的值赋值

你可能感兴趣的:(python)