• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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

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

    您可能感兴趣的文章:
    • python批量创建变量并赋值操作
    • python中如何对多变量连续赋值
    • Python基础之赋值,浅拷贝,深拷贝的区别
    • python模块中判断全局变量的赋值的实例讲解
    • python 使用pandas同时对多列进行赋值
    • python 实现循环定义、赋值多个变量的操作
    • python for循环赋值问题
    上一篇:pytorch fine-tune 预训练的模型操作
    下一篇:python中如何对多变量连续赋值
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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