引入:

实现链表翻转

class Solution:def reverseList(self, head: ListNode) -> ListNode:cur = headprev = Nonewhile cur:cur.next,prev,cur = prev,cur,cur.nextreturn prev

初入Python时,常按着C++的思维去想,然后被如下赋值给搞懵逼了。

 cur.next,prev,cur = prev,cur,cur.next

那为什么这样赋值能产生我们需要的效果?我们来简单了解下Python的变量赋值

变量赋值

赋值运算符

Python 语言中, 等号(=)是主要的赋值运算符。
anInt = 11
aString = 'leacoder'
aFloat = -3.1415
aList = ["a", "b", "c", "d"];
当然还有其他基本数据类型 可以参见 Python3 基本数据类型
注意,赋值并不是直接将一个值赋给一个变量,尽管可能根据其它语言编程经验认为应
该如此(比如我T_T)。在 Python 语言中,对象是通过引用传递的。在赋值时,不管这个对象是新创建的,还是一个已经存在的,都是将该对象的引用(并不是值)赋值给变量。

多重赋值

x=y=z=0

一个值为 0 的整数对象被创建,该对象的同一个引用被赋值给 x、y 和z 。也就是将一个对象赋给了多个变量。当然,在 Python 当中,将多个对象赋给多个变量也是可以的。

“多元”赋值

另一种将多个变量同时赋值的方法我们称为多元赋值(multuple)。将 "mul-tuple"连在一起自造的。因为采用这种方式赋值时, 等号两边的对象都是元组。

x, y, z = 1, 2, 'a string'
等同于 (x, y, z) = (1, 2, 'a string')

两个整数对象(值分别为 1 和 2)及一个字符串对象, 被分别赋值给x, y 和 z。通常元组需要用圆括号(小括号)括起来,尽管它们是可选的。但是加上圆括号以使得代码有更高的可读性,当然误解也就更少了。
在其他语言中(如C++),要交换两个值, 会想到使用一个临时变量比如 tmp 来临时保存其中一个值:

tmp = x;
x = y;
y = tmp;

在上面的 代码片段中,变量 x 和变量 y 的值被互相交换.临时变量 tmp 用于在将 y 赋值给 x 前先保存 x 的
值。将 y 的值赋给 x 之后, 才可以将保存在 tmp 变量中的 x 的值赋给 y。
Python 的多元赋值方式可以实现无需中间变量交换两个变量的值。

x, y = 123, 'a string'
print(x,y)
x, y = y, x
print(x,y)

输出:

123.png

Python 在赋值之前已经事先对 x 和 y 的新值做了计算。

列表和元组

可以将列表和元组当成普通的“数组”,它能保存任意数量任意类型的 Python 对象。和数组一样,通过从 0 开始的数字索引访问元素,但是列表和元组可以存储不同类型的对象。
列表和元组有几处重要的区别:
列表:元素用中括号( [ ])包裹,元素的个数及元素的值可以改变
元组:元素用小括号(( ))包裹,不可以更改(尽管他们的内容可以)。元组可以看成是只读的列表。


知乎个人首页:
https://www.zhihu.com/people/lichangke/
个人Blog:
https://lichangke.github.io/
欢迎大家来一起交流学习

关于Python 的“多元”赋值相关推荐

  1. python变量的赋值操作_Python中关于变量赋值操作的实例分享

    这篇文章主要介绍了Python编程之变量赋值操作,结合实例形式分析了Python赋值.位移.多元赋值操作符等相关操作使用技巧,需要的朋友可以参考下 本文实例讲述了Python编程之变量赋值操作.分享给 ...

  2. python多重赋值技巧_python教程12课:多元赋值、多重赋值、运算符以及判断字符串类型...

    # 多元赋值: # x,y,z 和 1,2,'String'是两个元组,只不过元组的 () 被省略掉了 x, y ,z = 1, 2, 'String' print(x, y, z) (x, y ,z ...

  3. Python中的赋值、引用和深浅拷贝

    2019独角兽企业重金招聘Python工程师标准>>> 全局变量 在函数之外创建的变量属于main,又被称为全局变量.它们可以在main中的任意函数中访问,与局部变量在函数结束时消失 ...

  4. python中的赋值和深浅拷贝

    赋值 在python中,赋值仅仅是复制了对象的引用,并没有开辟内存空间 a = 1 b = a 上述代码只是把a的引用复制给了b,结果是a和b同时指向1 对于可变对象 a = [1, 2, 3] b ...

  5. 在python中 函数赋值给变量时,需要注意的几个事项

    变量赋值是我们在日常开发中经常会遇到的一个问题,本文主要给大家介绍的是关于python将函数赋值给变量时需要注意的一些问题,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 见过两种函数 ...

  6. python中将函数赋值给变量时需要注意的一些问题

    变量赋值是我们在日常开发中经常会遇到的一个问题,本文主要给大家介绍的是关于python将函数赋值给变量时需要注意的一些问题,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 见过两种函数 ...

  7. 【Python】趣学Python变量和赋值:大师兄和二师兄教的好~

    公众号:尤而小屋 作者:Peter 编辑:Peter 今天给大家带来的是一篇关于Python变量与赋值的文章.其实Python中的赋值语句我们在之前的学习过程已经接触了很多,比如a=1,就是将数值1赋 ...

  8. python input函数赋值法_大佬们 我是刚开始学python的小白 遇到这种赋值方式 实在不懂这个a+b是赋值给谁的 求解...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这个是python独有的赋值方法 萌新不懂很正常啦 这个叫做"元组赋值法" 他会把前后两个部分当成一个元组去操作 所以在赋值过程中值不 ...

  9. python赋值语句对错_深入理解Python中变量赋值的问题

    前言 在Python中变量名规则与其他大多数高级语言一样,都是受C语言影响的,另外变量名是大小写敏感的. Python是动态类型语言,也就是说不需要预先声明变量类型,变量的类型和值在赋值那一刻被初始化 ...

最新文章

  1. [WinError 10038] 在一个非套接字上尝试了一个操作
  2. oracle体系结构剖析
  3. 2、leetcode278 第一个错误的版本**
  4. android 手机铃声设置铃声设置,Android 修改系统来电铃声
  5. 使用Spring JDBC时遇到的Software caused connection abort: recv failed问题
  6. 蓝色起源成功完成“新谢泼德号”飞船第17次发射
  7. vim表达式正则替换
  8. 【TWVRP】基于matlab遗传和模拟退火算法求解带时间窗的取送货问题【含Matlab源码 1139期】
  9. 区块链架构1.0、2.0与3.0梳理
  10. 相机的成像原理: 针孔相机, 胶卷相机 和 数码相机
  11. SAXReader的使用
  12. VM技术(一)NES模拟器VM综述
  13. MYSQL中redo log和binlog之间的区别
  14. 标学历年真题2016年版 真考题库1 电子表格
  15. 搭建Cobbler无人值守安装服务器
  16. CDN边缘智能助力5G
  17. 比 Redis 还快,更省内存,惊爆了!
  18. C++UML类图的关系
  19. c与c++的struct区别
  20. 物联网卡为什么不能更换设备?想更换怎么办?

热门文章

  1. 6、英飞凌-AURIX-TC3XX: PWM实验之使用 GTM -ATOM 实现
  2. Java模拟拨打电话程序_java_编写android拨打电话apk应用实例代码,android 实现拨打电话的app,代 - phpStudy...
  3. [Java]利用jsoup爬取易查分
  4. 开源资产管理软件—OCS Inventory NG+ GLPI 系统安装配置UTF-8版 支持中文
  5. 倒计时1天丨相信边缘的力量!
  6. 转载——服务器误删文件的恢复过程
  7. python 开发app应用
  8. android 轮播图
  9. kafka和raft共识机制
  10. NGINX服务器运维