工作中經常要處理各種各樣的資料,遇到專案趕進度的時候自己寫函式容易浪費時間。
python 中有很多內建函式幫你提高工作效率!
1.假設有乙個數字列表 data, 過濾列表中的負數
列表推導式
result =
[i for i in data if i >=
0]
filter
result =
filter
(lambda x: x>=
0, data)
2.學生的數學分數以字典形式儲存,篩選其中分數大於 80 分的同學
d =
使用 zip() 函式
zip() 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。
>>
> s1 =
>>
> s1
>>
> d =
>>
> d
1.某隨機序列中,找到出現次數最高的3個元素,它們出現的次數是多少?
隨機序列如下:
data =
[randint(0,
20)for _ in
range(20
)]
方法1: 可以使用字典來統計,以列表中的資料為鍵,以出現的次數為值
from random import randint
defdemo()
: data =
[randint(0,
20)for _ in
range(30
)]# 列表**現數字出現的次數
d =dict
.fromkeys(data,0)
for v in li:
d[v]+=1
return d
方法2:直接使用 collections 模組下面的 counter 物件
>>
> data =
[randint(0,
20)for _ in
range(30
)]>>
> data[7
,8,5
,16,10
,16,8
,17,11
,18,11
,17,15
,7,2
,19,5
,16,17
,17,12
,19,9
,10,0
,20,11
,2,11
,10]>>
> c2 = counter(data)
>>
> c2
counter(
)>>
> c2[14]
4>>
> c2.most_common(3)
# 統計頻度出現最高的3個數[(
17,4)
,(11,
4),(
16,3)
]
2. 對某英文文章單詞進行統計,找到出現次數最高的單詞以及出現的次數
通過上面的練習,我們知道可以用 counter 來解決
import re
from collections import counter
# 統計某個文章中英文單詞的詞頻
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)
)
比如班級中學生的數學成績以字典的形式儲存:
請按數學成績從高到底進行排序!
方法1: 利用 zip 將字典轉化為元祖,再用 sorted 進行排序
>>
> data =
>>
> data
>>
>
sorted
(data)
['a'
,'f'
,'s'
,'x'
,'y'
,'z'
]>>
> data =
sorted
(zip
(data.values(
), data.keys())
)>>
> data[(
61,'f'),(
64,'a'),(
69,'y'),(
73,'x'),(
76,'z'),(
100,
's')
]
方法2: 利用 sorted 函式的 key 引數
>>
> data.items(
)>>
> dict_items([(
'x',64)
,('y',74)
,('z',66)
,('f',62)
,('a',80)
,('s',72)
])>>
>
sorted
(data.items(
), key=
lambda x: x[1]
)[('f',62
),('x',64
),('z',66
),('s',72
),('y',74
),('a',80
)]
實際場景:在足球聯賽中,統計每輪比賽都有進球的球員
第一輪:模擬隨機的進球球員和進球數第二輪:
第三輪:
>>
> s1 =
>>
> s1
>>
> s2 =
>>
> s2
>>
> s3 =
>>
> s3
首先獲取字典的 keys,然後取每輪比賽 key 的交集
由於比賽輪次數是不定的,所以使用 map 來批量操作
map
(dict
.keys,
[s1, s2, s3]
)
然後一直累積取其交集, 使用 reduce 函式
reduce
(lambda x,y: x & y,
map(
dict
.keys,
[s1, s2, s3]
))
一行**搞定! python 高效程式設計
有時候,我們需要在兩台機器或服務之間做一些簡便的 很基礎的rpc之類的互動。我們希望用一種簡單的方式使用b程式呼叫a程式裡的乙個方法 有時是在另一台機器上。僅內部使用。我並不鼓勵將這裡介紹的方法用在非內部的 一次性的程式設計中。我們可以使用一種叫做xml rpc的協議 相對應的是這個python庫 ...
Python高效程式設計技巧
關鍵字 python 高效 程式設計 開源 原文 我已經使用python程式設計有多年了,即使今天我仍然驚奇於這種語言所能讓 表現出的整潔和對dry程式設計原則的適用。這些年來的經歷讓我學到了很多的小技巧和知識,大多數是通過閱讀很流行的開源軟體,如django,flask,requests中獲得的。...
python高效程式設計技巧
列表 ldata range 2,2 構造列表 a filter lambda x x 0,ldata filter函式 b x for x in ldata if x 0 列表解析 字典from random import randint ddata 構造字典 c 字典解析 集合sdata set...