多元赋值
今天来简单说一下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