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

 更新时间:2021年06月03日 10:50:37   作者:木子天一  
这篇文章主要介绍了Python连续赋值需要注意的一些问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • pytest自动化测试数据驱动yaml/excel/csv/json

    pytest自动化测试数据驱动yaml/excel/csv/json

    这篇文章主要为大家介绍了pytest自动化测试数据驱动yaml/excel/csv/json的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • numpy.meshgrid()理解(小结)

    numpy.meshgrid()理解(小结)

    这篇文章主要介绍了numpy.meshgrid()理解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Django 简单实现分页与搜索功能的示例代码

    Django 简单实现分页与搜索功能的示例代码

    这篇文章主要介绍了Django 简单实现分页与搜索功能的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • python通过正则查找微博@(at)用户的方法

    python通过正则查找微博@(at)用户的方法

    这篇文章主要介绍了python通过正则查找微博@(at)用户的方法,涉及Python正则匹配的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • Python数据处理中pd.concat与pd.merge的区别及说明

    Python数据处理中pd.concat与pd.merge的区别及说明

    这篇文章主要介绍了Python数据处理中pd.concat与pd.merge的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • pandas之数据修改与基本运算方式

    pandas之数据修改与基本运算方式

    这篇文章主要介绍了pandas之数据修改与基本运算方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python socket处理client连接过程解析

    Python socket处理client连接过程解析

    这篇文章主要介绍了Python socket处理client连接过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • python实现使用遗传算法进行图片拟合

    python实现使用遗传算法进行图片拟合

    最近做项目需要图像拟合,本文主要介绍了python实现使用遗传算法进行图片拟合,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • python开启摄像头以及深度学习实现目标检测方法

    python开启摄像头以及深度学习实现目标检测方法

    今天小编就为大家分享一篇python开启摄像头以及深度学习实现目标检测方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 聊聊Python中关于a=[[]]*3的反思

    聊聊Python中关于a=[[]]*3的反思

    这篇文章主要介绍了Python中关于a=[[]]*3的反思,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06

最新评论