国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

在Python3中初學者應會的一些基本的提升效率的小技巧

2020-02-23 00:27:49
字體:
來源:轉載
供稿:網友

有時候我反問我自己,怎么不知道在Python 3中用更簡單的方式做“這樣”的事,當我尋求答案時,隨著時間的推移,我當然發現更簡潔、有效并且bug更少的代碼。總的來說(不僅僅是這篇文章),“那些”事情總共數量是超過我想象的,但這里是第一批不明顯的特性,后來我尋求到了更有效的/簡單的/可維護的代碼。
字典

字典中的keys()和items()

你能在字典的keys和items中做很多有意思的操作,它們類似于集合(set):

 aa = {‘mike': ‘male', ‘kathy': ‘female', ‘steve': ‘male', ‘hillary': ‘female'} bb = {‘mike': ‘male', ‘ben': ‘male', ‘hillary': ‘female'} aa.keys() & bb.keys() # {‘mike', ‘hillary'} # these are set-likeaa.keys() - bb.keys() # {‘kathy', ‘steve'}# If you want to get the common key-value pairs in the two dictionariesaa.items() & bb.items() # {(‘mike', ‘male'), (‘hillary', ‘female')}

太簡潔啦!

在字典中校驗一個key的存在

下面這段代碼你寫了多少遍了?

 dictionary = {}for k, v in ls:  if not k in dictionary:    dictionary[k] = []  dictionary[k].append(v)

這段代碼其實沒有那么糟糕,但是為什么你一直都需要用if語句呢?

 from collections import defaultdictdictionary = defaultdict(list) # defaults to listfor k, v in ls:  dictionary[k].append(v)

這樣就更清晰了,沒有一個多余而模糊的if語句。

用另一個字典來更新一個字典

 from itertools import chaina = {‘x': 1, ‘y':2, ‘z':3}b = {‘y': 5, ‘s': 10, ‘x': 3, ‘z': 6} # Update a with bc = dict(chain(a.items(), b.items()))c # {‘y': 5, ‘s': 10, ‘x': 3, ‘z': 6}

這樣看起來還不錯,但是不夠簡明。看看我們是否能做得更好:

 c = a.copy()c.update(b)

更清晰而且更有可讀性了!

從一個字典獲得最大值

如果你想獲取一個字典中的最大值,可能會像這樣直接:

 aa = {k: sum(range(k)) for k in range(10)}aa # {0: 0, 1: 0, 2: 1, 3: 3, 4: 6, 5: 10, 6: 15, 7: 21, 8: 28, 9: 36}max(aa.values()) #36

這么做是有效的,但是如果你需要key,那么你就需要在value的基礎上再找到key。然而,我們可以用過zip來讓展現更扁平化,并返回一個如下這樣的key-value形式:

 max(zip(aa.values(), aa.keys()))# (36, 9) => value, key pair

同樣地,如果你想從最大到最小地去遍歷一個字典,你可以這么干:

 sorted(zip(aa.values(), aa.keys()), reverse=True)# [(36, 9), (28, 8), (21, 7), (15, 6), (10, 5), (6, 4), (3, 3), (1, 2), (0, 1), (0, 0)]

在一個list中打開任意數量的items

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘肃省| 清新县| 九龙县| 金沙县| 鄂尔多斯市| 大连市| 贵州省| 扶余县| 西丰县| 思茅市| 兴化市| 平原县| 南漳县| 柘城县| 仪征市| 偏关县| 金秀| 叶城县| 台州市| 浑源县| 石景山区| 台东县| 嵊泗县| 神农架林区| 阳曲县| 兖州市| 定安县| 拉萨市| 榆树市| 修水县| 延津县| 宜都市| 汝州市| 安丘市| 凤台县| 秦安县| 新绛县| 临汾市| 和林格尔县| 康马县| 水城县|