Python程式設計技巧

2021-10-05 08:02:50 字數 2598 閱讀 6533

python 字典中使用了 hash table,因此查詢操作的複雜度為 o(1),而 list 實際是個陣列,在 list 中,查詢需要遍歷整個 list,其複雜度為 o(n),因此對成員的查詢訪問等操作字典要比 list 更快。

set 的 union, intersection,difference 操作要比 list 的迭代要快。因此如果涉及到求 list 交集,並集或者差的問題可以轉換為 set 來操作。

對迴圈的優化所遵循的原則是儘量減少迴圈過程中的計算量,有多重迴圈的盡量將內層的計算提到上一層。

python 中的字串物件是不可改變的,因此對任何字串的操作如拼接,修改等都將產生乙個新的字串物件,而不是基於原字串,因此這種持續的 copy 會在一定程度上影響 python 的效能。

out =

"%s%s%s%s"

%(head, prologue, query, tail)

避免

out =

""+ head + prologue + query + tail +

""

列表解析要比在迴圈中重新構建乙個新的 list 更為高效

for w in

list

:

列表解析:

total =

[w for w in

list

]

python效能優化技巧

1. 列表排序後的索引

arr =[1

,2,3

,0,1

,9,8

]sorted

(range

(len

(arr)

), key=

lambda k: arr[k])[

3,0,

4,1,

2,6,

5]

2. 兩個維度均降序(優先第乙個維度)

arr=[[

0,0]

,[1,

0],[

1,1]

,[0,

1]]arr.sort(key=

lambda x:

[-x[0]

,-x[1]

])arr[[0

,0],

[0,1

],[1

,0],

[1,1

]]

1. 利用虛數求解一元一次方程

eq=

'2*x+1=3'

equ=eq.replace(

'=',

'-(')+

')'c=

eval

(equ,

)if c.imag==0:

print(-

1)else

: x=

-c.real/c.imag

print

(c)1

方法一:

digit=

while n:10)

n=n//

10

方法二:

digit=

[int

(_)for _ in

str(n)

]

官方教程

乙個 counter 是乙個 dict 的子類,用於計數可雜湊物件。它是乙個集合,元素像字典鍵(key)一樣儲存,它們的計數儲存為值。計數可以是任何整數值,包括0和負數。

from collections import counter

colors =

['red'

,'blue'

,'red'

,'green'

,'blue'

,'blue'

]c = counter(colors)

print

(dict

(c))

c = counter(

['eggs'

,'ham'])

c['bacon'

]# 不存在就返回0

#0

c[

'sausage']=

0# counter entry with a zero count

del c[

'sausage'

]

c = counter(a=

4, b=

2, c=

0, d=-2

)list

(c.elements())

#['a', 'a', 'a', 'a', 'b', 'b']

counter(

'abracadabra'

).most_common(3)

#[('a', 5), ('r', 2), ('b', 2)]

python程式設計技巧

將乙個字串轉化成ascii碼並遍歷 for c in map ord,raw input 將乙個字串轉化成ascii碼並儲存到列表 l ord i ord a for i in input 字典,如果key存在則value 1否則建立 key,value 0 mp d sum mp d get d,...

Python高效程式設計技巧

關鍵字 python 高效 程式設計 開源 原文 我已經使用python程式設計有多年了,即使今天我仍然驚奇於這種語言所能讓 表現出的整潔和對dry程式設計原則的適用。這些年來的經歷讓我學到了很多的小技巧和知識,大多數是通過閱讀很流行的開源軟體,如django,flask,requests中獲得的。...

Python優雅程式設計技巧

標籤 空格分隔 python 需求 把list所有成員元素加倍。普通的方式 bag 1,2,3,4,5 for i in range len bag bag i bag i 2優雅的方式 bag 1,2,3,4,5 bag elem 2 for elem in bag 普通的方式 bag 1,2,3...