Python 高效編程技巧分享
一、根據(jù)條件在序列中篩選數(shù)據(jù)
- 假設(shè)有一個(gè)數(shù)字列表 data, 過濾列表中的負(fù)數(shù)
data = [1, 2, 3, 4, -5] # 使用列表推導(dǎo)式 result = [i for i in data if i >= 0] # 使用 fliter 過濾函數(shù) result = filter(lambda x: x >= 0, data)
- 學(xué)生的數(shù)學(xué)分?jǐn)?shù)以字典形式存儲(chǔ),篩選其中分?jǐn)?shù)大于 80 分的同學(xué)
from random import randint d = {x: randint(50, 100) for x in range(1, 21)} r = {k: v for k, v in d.items() if v > 80}
二、對(duì)字典的鍵值對(duì)進(jìn)行翻轉(zhuǎn)
- 使用 zip() 函數(shù)
zip() 函數(shù)用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的列表。
from random import randint, sample s1 = {x: randint(1, 4) for x in sample("abfcdrg", randint(1, 5))} d = {k: v for k, v in zip(s1.values(), s1.keys())}
三、統(tǒng)計(jì)序列中元素出現(xiàn)的頻度
- 某隨機(jī)序列中,找到出現(xiàn)次數(shù)最高的3個(gè)元素,它們出現(xiàn)的次數(shù)是多少
方法1:
# 可以使用字典來統(tǒng)計(jì),以列表中的數(shù)據(jù)為鍵,以出現(xiàn)的次數(shù)為值 from random import randint # 構(gòu)造隨機(jī)序列 data = [randint(0, 20) for _ in range(30)] # 列表中出現(xiàn)數(shù)字出現(xiàn)的次數(shù) d = dict.fromkeys(data, 0) for v in d: d[v] += 1
方法2:
# 直接使用 collections 模塊下面的 Counter 對(duì)象 from collections import Counter from random import randint data = [randint(0, 20) for _ in range(30)] c2 = Counter(data) # 查詢?cè)爻霈F(xiàn)次數(shù) c2[14] # 統(tǒng)計(jì)頻度出現(xiàn)最高的3個(gè)數(shù) c2.most_common(3)
- 對(duì)某英文文章單詞進(jìn)行統(tǒng)計(jì),找到出現(xiàn)次數(shù)最高的單詞以及出現(xiàn)的次數(shù)
import re from collections import Counter # 統(tǒng)計(jì)某個(gè)文章中英文單詞的詞頻 with open("test.txt", "r", encoding="utf-8") as f: d = f.read() # 所有的單詞列表 total = re.split("\W+", d) result = Counter(total) print(result.most_common(10))
四、根據(jù)字典中值的大小,對(duì)字典中的項(xiàng)進(jìn)行排序
- 比如班級(jí)中學(xué)生的數(shù)學(xué)成績(jī)以字典的形式存儲(chǔ),請(qǐng)按數(shù)學(xué)成績(jī)從高到底進(jìn)行排序
方法1:
# 利用 zip 將字典轉(zhuǎn)化為元組,再用 sorted 進(jìn)行排序 from random import randint data = {x: randint(60, 100) for x in "xyzfafs"} sorted(data) data = sorted(zip(data.values(), data.keys()))
方法2:
# 利用 sorted 函數(shù)的 key 參數(shù) from random import randint data = {x: randint(60, 100) for x in "xyzfafs"} data.items() sorted(data.items(), key=lambda x: x[1])
五、在多個(gè)字典中找到公共鍵
- 實(shí)際場(chǎng)景:在足球聯(lián)賽中,統(tǒng)計(jì)每輪比賽都有進(jìn)球的球員
第一輪:{"C羅": 1, "蘇亞雷斯":2, "托雷斯": 1..}
第二輪:{"內(nèi)馬爾": 1, "梅西":2, "姆巴佩": 3..}
第三輪:{"姆巴佩": 2, "C羅":2, "內(nèi)馬爾": 1..}
from random import randint, sample from functools import reduce # 模擬隨機(jī)的進(jìn)球球員和進(jìn)球數(shù) s1 = {x: randint(1, 4) for x in sample("abfcdrg", randint(1, 5))} s2 = {x: randint(1, 4) for x in sample("abfcdrg", randint(1, 5))} s3 = {x: randint(1, 4) for x in sample("abfcdrg", randint(1, 5))} # 首先獲取字典的 keys,然后取每輪比賽 key 的交集。由于比賽輪次數(shù)是不定的,所以使用 map 來批量操作 # map(dict.keys, [s1, s2, s3]) # 然后一直累積取其交集,使用 reduce 函數(shù) reduce(lambda x, y: x & y, map(dict.keys, [s1, s2, s3]))
以上就是Python 高效編程技巧分享的詳細(xì)內(nèi)容,更多關(guān)于Python 高效編程技巧的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Django如何防止定時(shí)任務(wù)并發(fā)淺析
這篇文章主要給大家介紹了關(guān)于Django如何防止定時(shí)任務(wù)并發(fā)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05使用PyInstaller將Pygame庫(kù)編寫的小游戲程序打包為exe文件及出現(xiàn)問題解決方法
這篇文章主要介紹了使用PyInstaller將Pygame庫(kù)編寫的小游戲程序打包為exe文件的方法,給大家介紹了通過Pyinstaller打包Pygame庫(kù)寫的小游戲程序出現(xiàn)的問題及解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09Python畫圖工具M(jìn)atplotlib庫(kù)常用命令簡(jiǎn)述
這篇文章主要介紹了Python畫圖Matplotlib庫(kù)常用命令簡(jiǎn)述總結(jié),文中包含詳細(xì)的圖文示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09Python中pandas模塊DataFrame創(chuàng)建方法示例
這篇文章主要介紹了Python中pandas模塊DataFrame創(chuàng)建方法,結(jié)合實(shí)例形式分析了DataFrame的功能,以及pandas模塊基于列表、字段與數(shù)組創(chuàng)建DataFrame的相關(guān)操作技巧,需要的朋友可以參考下2018-06-06Python實(shí)現(xiàn)迷宮生成器的詳細(xì)代碼
這篇文章主要介紹了Python實(shí)現(xiàn)迷宮生成器的詳細(xì)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07