Python高效程式設計

2021-09-24 18:13:38 字數 3665 閱讀 8215

工作中經常要處理各種各樣的資料,遇到專案趕進度的時候自己寫函式容易浪費時間。

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...