是不是经常看到:=符号而又百思不得其解呢

栗子

话不多说,我们直接上例子!

a=321

print(a)
print(v:=a)
print(v)

'''
321
321
321
'''

对数字有着某种规律的话,对其他类型是否有效呢?

# 再来看一个简单的栗子
a=input() # "abcd"
print(v:=a)
print(v)

'''
abcd
abcd
'''

从上述的两个栗子我们可以发现,:=符号的作用是在表达式内获取变量值并赋给新变量。

好像他的返回值也挺有意思的?我们进一步观察:

a=7
print(V:=(a+2))
print(V)

'''
9
9
'''

没错了,不但能够将表达式的值赋给变量,还能够再向上返回这个值。

总结

:=符号不能单独作为一个语句使用,一般是嵌套在函数内部,用于中间层获取返回值。

可以类似于A给B打电话,C偷听了他们的内容,并且记下来了。此时A和B依旧在正常通话。

其实就是个语法糖一样的东西啦

我们来做个小练习吧~


练习题

给定一个单词列表 words和一个整数 k ,返回前k个出现次数最多的单词。

返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序。

from collections import Counter
class Solution:
    def topKFrequent(self, words: List[str], k: int) -> List[str]:
        # 先获取到一个单词hash表 Counter(words)
        # 题目所给的需要进行的排序优先度为: 数量>字典序
        # 我们可以考虑采用sorted函数,通过关键词 key=lambda x:(数量,字典序) 进行排序
        # 当然,数量是从小到大,而字典序是从大到小,这里需要控制
        # 所以最终的语句为:
        return sorted((cnt:=Counter(words)).keys(),key=lambda x:(-cnt[x],x))[:k]

这个语句等价于:

class Solution:
    def topKFrequent(self, words, k: int):
        cnt=Counter(words)
        return sorted(cnt.keys(),key=lambda x:(-cnt[x],x))[:k]
物联沃分享整理
物联沃-IOTWORD物联网 » Python := 符号解析

发表评论