概述
Python 同时赋值问题
在平时需要交换两个变量的值时,我们通常是这么写的
item = a
a = b
b = item
Python 中提供了一种更为简便的技巧,可以用同时给变量赋值,类似这种:
a, b = b, a
这两种方式得到的结果是相同的,那如此神奇的代码,实现原理是什么呢?
原理
在 Python 中,多重赋值的功能是通过迭代对象解包
这一方法实现的,也被称作元组解包
a, b = 1, 2
这行代码的意思是讲a
设为1
,b
为2
,在底层代码中,实际上是创建了一个(1, 2)
的元组,通过遍历元组取到了1
和2
的值,分别赋给a
和b
因为 Python 在中,元组两侧的括号实际上是可以省略的,即:
tup = 1, 2
print(tup)
# 输出:(1, 2)
所以在多重赋值中,元组的()
也可以被省略,便有了上边多重赋值的语法
实际上,多重赋值也并不一定是通过元组,所有可迭代的对象都可以使用这种语法,例如:
a, b = [1, 2]
s1, s2 = 'ab'
通俗的讲
如果理解不来底层的思想,我们可以这么理解多重赋值,即先确定=
右边的值,再将其赋给左边
例子(反转链表)
我们可以通过一个 Python 实现的反转链表
来使用多重赋值,其他所有语言都需要设定一个临时变量来存储cur.next
的值,而 Python 可以避免这种复杂的代码,Python 和 Java 的代码如下,请大家自行对比:
def reverseList(head):
cur, prev = head, None
while cur:
# 多重赋值
cur.next, prev, cur = prev, cur, cur.next
return prev
public ListNode reverseList(ListNode head) {
ListNode cur = head;
ListNode pre = null;
while (cur != null) {
ListNode temp = cur.next;
cur.next = pre;
pre = cur;
cur = temp;
}
return pre;
总结
多重赋值是 Python 一个很实用的语法糖,不仅可以简化代码的复杂程度,还可以大大提高代码的逼格!借汉奇大佬一句话多了解语言机制比学工具有用
,奥里给!
最后
以上就是欣慰蜜粉为你收集整理的Python——语法糖:多重赋值(元组解包、迭代对象解包)问题及原理Python 同时赋值问题原理通俗的讲例子(反转链表)总结的全部内容,希望文章能够帮你解决Python——语法糖:多重赋值(元组解包、迭代对象解包)问题及原理Python 同时赋值问题原理通俗的讲例子(反转链表)总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复