Python多元赋值的巧妙应用

多元赋值

今天来简单说一下python的多元赋值,多元赋值——故名思意就是一次性对多个元素进行赋值,在python中,多元赋值可以巧妙且方便的解决变量先后变化的问题,防止一个变量在赋值给下一个变量的时候因为这个变量的改变而导致下一个变量也发生了改变。话不多说,摆上我们的例子
a, c = 1, 3
如果我们想要让a, c=3, 1,不能直接通过赋值的形式,那么我们常规的做法是

a = tmp
a = c
c = tmp

而通过多元赋值的方式,我们可以直接使用a, c = c, a,多元赋值的好处之一就是我们无需为即将变化的变量定义一个中间变量,在左右存在相同变量的情况下,左边变量的改变并不会改变右边的变量,因此我们可以做到很多事情,例如在力扣的第414题中,我们需要找到一个数组中第三大的数,我们事先定义好3位按序排好的数,每次对3位排序好的数进行更新,当我们更新第一位的时候,第二位与第三位数需要依次进行更新,如果按照常规写法来写,会很冗余,然而按照多元赋值的方式,就可以变得非常简洁

# 常规写法
class Solution:
    def thirdMax(self, nums: List[int]) -> int:
        # 按顺序定义好3个数,一次遍历比较
        a, b, c = float('-inf'), float('-inf'), float('-inf')
        for num in nums:
            if a < num:
            # a需要最后进行改变,因为a先变,会影响到b和c的赋值
                c = b
                b = a
                a = num
            elif b < num < a:
            # 同理
                c = b
                b = num
            elif c < num < b:
                c = num
        return a if c == float('-inf') else c
class Solution:
    def thirdMax(self, nums: List[int]) -> int:
        # 按顺序定义好3个数,一次遍历比较
        a, b, c = float('-inf'), float('-inf'), float('-inf')
        for num in nums:
            if a < num:
            # 多元赋值,省去了中间变量的定义
                a, b, c = num, a, b
            elif b < num < a:
                b, c = num, b
            elif c < num < b:
                c = num
        return a if c == float('-inf') else c
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值