是不是经常看到:=符号而又百思不得其解呢
栗子
话不多说,我们直接上例子!
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]