是不是经常看到:=符号而又百思不得其解呢
栗子
话不多说,我们直接上例子!
1 2 3 4 5 6 7 8 9 10 11
| a=321
print(a) print(v:=a) print(v)
''' 321 321 321 '''
|
对数字有着某种规律的话,对其他类型是否有效呢?
1 2 3 4 5 6 7 8 9
| a=input() print(v:=a) print(v)
''' abcd abcd '''
|
从上述的两个栗子我们可以发现,:=符号的作用是在表达式内获取变量值并赋给新变量。
好像他的返回值也挺有意思的?我们进一步观察:
1 2 3 4 5 6 7 8
| a=7 print(V:=(a+2)) print(V)
''' 9 9 '''
|
没错了,不但能够将表达式的值赋给变量,还能够再向上返回这个值。
总结
:=符号不能单独作为一个语句使用,一般是嵌套在函数内部,用于中间层获取返回值。
可以类似于A给B打电话,C偷听了他们的内容,并且记下来了。此时A和B依旧在正常通话。
其实就是个语法糖一样的东西啦
案例
数据分析,要求从微信接龙中随机抽取35名选手参加毕业典礼。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import random from collections import defaultdict
def solve(s:str,k:int=35)->None:
hashmap=defaultdict(str)
with open(s) as f: nameList=f.readlines()
for i in nameList: hashmap[val[0]]=(val:=i.split("."))[1].strip("\n")
for i in random.sample(range(1,(l:=len(hashmap))+1),l-k if l>k else 0): print(hashmap[str(i)])
solve(r"C:\Users\lenovo\Desktop\新建 XLS 工作表.txt")
|
我们来做个小练习吧~
练习题
给定一个单词列表 words和一个整数 k ,返回前k个出现次数最多的单词。
返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序。
1 2 3 4 5 6 7 8 9
| from collections import Counter class Solution: def topKFrequent(self, words: List[str], k: int) -> List[str]: return sorted((cnt:=Counter(words)).keys(),key=lambda x:(-cnt[x],x))[:k]
|
这个语句等价于:
1 2 3 4
| class Solution: def topKFrequent(self, words, k: int): cnt=Counter(words) return sorted(cnt.keys(),key=lambda x:(-cnt[x],x))[:k]
|