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实现ip查询示例
Mar 26 Python
python中的装饰器详解
Apr 13 Python
Python中使用haystack实现django全文检索搜索引擎功能
Aug 26 Python
Python进阶之尾递归的用法实例
Jan 31 Python
Python可变参数*args和**kwargs用法实例小结
Apr 27 Python
python逆序打印各位数字的方法
Jun 25 Python
用Python实现筛选文件脚本的方法
Oct 27 Python
pycharm的console输入实现换行的方法
Jan 16 Python
python实现两个经纬度点之间的距离和方位角的方法
Jul 05 Python
详解Python Opencv和PIL读取图像文件的差别
Dec 27 Python
浅析Django中关于session的使用
Dec 30 Python
PyCharm 2020.2 安装详细教程
Sep 25 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
基于jQuery的动态表格插件
2011/03/28 Javascript
jQuery Ajax请求状态管理器打包
2012/05/03 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
2016/05/30 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
原生js仿淘宝网商品放大镜效果
2017/02/28 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
python数据结构之二叉树的建立实例
2014/04/29 Python
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
简单实现python爬虫功能
2015/12/31 Python
Python中生成Epoch的方法
2017/04/26 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
pytorch 模拟关系拟合——回归实例
2020/01/14 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
10个很棒的 CSS3 开发工具 推荐
2011/05/16 HTML / CSS
HTML5本地存储之Web Storage应用介绍
2013/01/06 HTML / CSS
html5通过postMessage进行跨域通信的方法
2017/12/04 HTML / CSS
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
施华洛世奇美国官网:SWAROVSKI美国
2018/02/08 全球购物
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
营销与策划个人求职信
2013/09/22 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
学校四风对照检查材料
2014/08/28 职场文书
影视广告专业求职信
2014/09/02 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
干部理论学习心得体会
2016/01/21 职场文书