Python连续赋值需要注意的一些问题


Posted in Python onJune 03, 2021

Python连续赋值的注意事项

在python中是可以使用连续赋值的方式来一次为多个变量进行赋值的,比如:

a = b = c = 1
a, b, c = 1, 1, 1

这些都可以完成变量的赋值,但是就有一个问题了,比如:

a = 3
a, b = 1, a

如果按照正常的思维逻辑,先进行a = 1,在进行b = a,最后b应该等于1,但是这里b应该等于3,因为在连续赋值语句中等式右边其实都是局部变量,而不是真正的变量值本身,比如,上面例子中右边的a,在python解析的时候,只是把变量a的指向的变量3赋给b,而不是a=1之后a的结果,这一点刚开始学python的人可能容易误解,再举一个Leetcode里链表的例子理解就更深了。

假如要对一个链表进行翻转,就比如把1—>2->3->4转化为4->3->2->1

对于这个问题很简单,只要反转指针就可以了,假如链表结构为:

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

我们可以用很简单的三行代码完成这个过程:

def reverseList(self, head):
        L = ListNode(float("-inf"))
        while head:
            L.next, head.next, head = head, L.next, head.next
        return L.next

这里的L是指向一个新建的结点,因为python没有指针的概念,所以用一个额外的结点来代替头指针,这里的核心代码就是中间那一行三个变量的连续赋值,如果单独一句句来理解的话,最后肯定是想不通的,在这里,假设head结点是链表串'1->2->3->4'的头结点,先用新的L结点的next指针指向head的第一个结点‘1',之后将L.next(第一次也就是空)赋给了head的next指针,之后再把head的next指针(注意,这里的next指针还是指向‘2'的,而不是空)赋给head,相当于next向前移一位,这一步相当于一个串变成了两个:

L:‘-inf'->‘1'
head:‘2'->‘3'->‘4'->‘5'

Python花样赋值方法总结

 

#连等赋值
a=b=c=1
#拆包赋值
a,b=1,2
#用_占位和*代表不确定个参数进行拆包赋值
a=range(10)
_,b,c,*d=a
#迭代赋值
a=(1,2)
b=[(i,j)for i in a for j in a]
#交换
a,b=b,a

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python操作CouchDB的方法
Oct 08 Python
Python获取服务器信息的最简单实现方法
Mar 05 Python
python中反射用法实例
Mar 27 Python
python实现逆波兰计算表达式实例详解
May 06 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
Jan 03 Python
python在新的图片窗口显示图片(图像)的方法
Jul 11 Python
Python实现图片识别加翻译功能
Dec 26 Python
使用tensorboard可视化loss和acc的实例
Jan 21 Python
CentOS 7如何实现定时执行python脚本
Jun 24 Python
Python制作简单的剪刀石头布游戏
Dec 10 Python
解决pytorch-gpu 安装失败的记录
May 24 Python
pytorch fine-tune 预训练的模型操作
Jun 03 #Python
Python实现byte转integer
Jun 03 #Python
Python数据分析之绘图和可视化详解
Python数据分析之pandas读取数据
Jun 02 #Python
Python 如何实现文件自动去重
python状态机transitions库详解
Jun 02 #Python
python爬取某网站原图作为壁纸
You might like
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
PHP 解决session死锁的方法
2013/06/20 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
详解php curl带有csrf-token验证模拟提交方法
2018/04/18 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
2008/03/22 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
JavaScript中的this到底是什么(一)
2015/12/09 Javascript
基于JavaScript FileReader上传图片显示本地链接
2016/05/27 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
跟老齐学Python之Import 模块
2014/10/13 Python
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
Python实现生成随机数据插入mysql数据库的方法
2017/12/25 Python
python3实现点餐系统
2019/01/24 Python
Python for循环及基础用法详解
2019/11/08 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
2020/02/26 Python
浅谈TensorFlow之稀疏张量表示
2020/06/30 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
总结表彰大会主持词
2014/03/26 职场文书
业务员自荐信范文
2014/04/20 职场文书
2015年关爱留守儿童工作总结
2015/05/22 职场文书
如何写好活动总结
2019/06/21 职场文书
javaScript Array api梳理
2021/03/31 Javascript
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技