Python程式設計小技巧總結

2021-10-03 07:04:31 字數 4452 閱讀 8649

經常看到關於python程式設計的小技巧,但是都沒有記錄下來,當下次運用時還是原來的寫法,這不記錄一下。

python 裡有個小彩蛋:

在 python shell 裡輸入import this

這段話被稱作「python 之禪」(the zen of python),它列舉了一些 python 所推崇的理念,比如:

優美勝於醜陋

明確勝於隱晦

簡單勝於複雜

…可讀性很重要

不要忽略錯誤

面對不確定時,拒絕猜測

現在做好過不做,但盲目動手不如不做

如果你的實現很難說清楚,那是個壞想法;反之亦然

…初學者寫法:

for i in

range

(len

(lst)):

print

(lst[i]

)

pythonic寫法:

for i in lst:

print

(i)

普通寫法:

temp = a

a = b

b = temp

pythonic 寫法:

a, b = b, a
普通寫法:

f =

open

('filename.txt'

) text = f.read(

)print

(text)

f.close(

)

pythonic 寫法:

with

open

('filename.txt'

)as f:

for line in f:

print

(line)

wit

h的好處

是即使出

錯,也會

幫你關閉

檔案

。\colorwith 的好處是即使出錯,也會幫你關閉檔案。

with的好

處是即使

出錯,也

會幫你關

閉檔案。

拼接字串

pythonic 寫法:

list

(set

(x))

普通寫法:

letters =

['h'

,'e'

,'l'

,'l'

,'o'

] s =

''for l in letters:

s += l

print

(s)

pythonic 寫法:

print(''

.join(letters)

)

pythonic 寫法:

for i, elem in

enumerate

(lst)

:print

(i, elem)

遍歷字典項:

for key, value in dct.items():

print

(key, value)

pythonic 寫法:

newlst =

[i for i in lst if i >

0]

這樣會更節省資源,提公升執行效率。

普通寫法:

value = dct[key]
這樣的問題在於,如果 key 不存在,**就報錯跳出。於是你不得不增加更多的判斷。

pythonic 寫法:

value = dct.get(key,

0)

改用 get 方法,不存在時會得到 none,或者指定的預設值(這裡是 0)。

filter寫法:

data =[2

,2,-

3,6]

filter

(lambda x: x >=

0,data)

列表解析:

data =[2

,2,-

3,6]

[x for x in data if x >=

0]

列表解析效率高於filter高於普通迭代。

例子學生資訊系統中資料為固定格式:

name,age ,***,email =

range(4

)# 用變數當常數值

student =

('jim',16

,'male'

,'[email protected]'

)print

(student[name]

)if student[age]

<=26:

##if student[***]

<=

'male'

:##

from collections import namedtuple

student = namedtuple(

'student',[

'name'

,'age'

,'***'

,'email'])

s = student(

'jim',16

,'male'

,'[email protected]'

)## 訪問

s.name

s.age

s.***

from collections import counter

obj = counter(

'aabbccc'

)print

(obj)

d =

zip(d.keys(

),d.values())

sorted

(zip

(d.keys(

),d.values())

)# [(84, 'z'), (85, 'a'), (85, 'x'), (88, 'b'), (94, 'c'), (96, 'y')]

d =

d.items(

)# [('a', 85), ('c', 94), ('b', 88), ('y', 96), ('x', 85), ('z', 84)]

sorted

(d.items(

),key =

lambda x: x[1]

)# x表示d.items()生成的列表的每一項,x[1]代表每一項裡面的第二個

# [('z', 84), ('a', 85), ('x', 85), ('b', 88), ('c', 94), ('y', 96)]

dict

(sorted

(d.items(

),key =

lambda x: x[1]

))# 轉換為字典

普通寫法::

# 字典

a =b =

c =res =

for k in a:

if k in b and k in c:

res

利用集

合set

操作

\color利用集合set操作

利用集合se

t操作使用字典的keys方法(不靈活)

# 字典

a =b =

c =a.keys(

)& b.keys(

)& c.keys(

)ret =

reduce

(lambda x, y : x & y,

map(

dict

.keys,

[a, b, c]))

print

(ret)

#

from collections import orderddict

d = orderdict()d[

'jim']=

(1,35

)d['leo']=

(2,37

)d['bob']=

(3,48

)print

(d)

from collections import deque

q = deque(

,5)# 多於5個時之前的退出

python 程式設計小技巧

最簡單的方法式利用集合操作 data list 1,1,2,3,4,4 data unique set data list 利用zip函式,打包兩個物件 也可以打包多個物件 l1 1,2,3,4 l2 5,6,7,8 zip l1,l2 生成了乙個新的迭代物件 list zip l1,l2 1,5 ...

python程式設計小技巧

coding utf 8 import sys class people def init self,name print name name print 30 print class name self.class name if name main p people zhangsan 執行結果 ...

Python常用小技巧總結

1.獲取本地mac位址 import uuid mac uuid.uuid1 hex 12 print ma程式設計客棧c 執行結果 e0cb4e077585 2.del 的使用 a b c d del a 0 print a 輸出 c d a b c d del a 0 2 刪除從第1個元素開始,...