經常看到關於python程式設計的小技巧,但是都沒有記錄下來,當下次運用時還是原來的寫法,這不記錄一下。
python 裡有個小彩蛋:
在 python shell 裡輸入import this
這段話被稱作「python 之禪」(the zen of python),它列舉了一些 python 所推崇的理念,比如:
優美勝於醜陋
明確勝於隱晦
簡單勝於複雜
…可讀性很重要
不要忽略錯誤
面對不確定時,拒絕猜測
現在做好過不做,但盲目動手不如不做
如果你的實現很難說清楚,那是個壞想法;反之亦然
…初學者寫法:
pythonic寫法:for i in
range
(len
(lst)):
(lst[i]
)
普通寫法:for i in lst:
(i)
pythonic 寫法:temp = a
a = b
b = temp
a, b = b, a
普通寫法:
pythonic 寫法:f =
open
('filename.txt'
) text = f.read(
(text)
f.close(
)
witwith
open
('filename.txt'
)as f:
for line in f:
(line)
h的好處
是即使出
錯,也會
幫你關閉
檔案
。\colorwith 的好處是即使出錯,也會幫你關閉檔案。
with的好
處是即使
出錯,也
會幫你關
閉檔案。
拼接字串
pythonic 寫法:
普通寫法:list
(set
(x))
pythonic 寫法:letters =
['h'
,'e'
,'l'
,'l'
,'o'
] s =
''for l in letters:
s += l
(s)
pythonic 寫法:print(''
.join(letters)
)
遍歷字典項:for i, elem in
enumerate
(lst)
(i, elem)
pythonic 寫法:for key, value in dct.items():
(key, value)
這樣會更節省資源,提公升執行效率。newlst =
[i for i in lst if i >
0]
普通寫法:
value = dct[key]
這樣的問題在於,如果 key 不存在,**就報錯跳出。於是你不得不增加更多的判斷。
pythonic 寫法:
改用 get 方法,不存在時會得到 none,或者指定的預設值(這裡是 0)。value = dct.get(key,
0)
filter寫法:
列表解析:data =[2
,2,-
3,6]
filter
(lambda x: x >=
0,data)
列表解析效率高於filter高於普通迭代。data =[2
,2,-
3,6]
[x for x in data if x >=
0]
例子學生資訊系統中資料為固定格式:
name,age ,***,email =
range(4
)# 用變數當常數值
student =
('jim',16
,'male'
,'12345@qq.com'
(student[name]
)if student[age]
<=26:
##if student[***]
<=
'male'
:##
from collections import namedtuple
student = namedtuple(
'student',[
'name'
,'age'
,'***'
,'email'])
s = student(
'jim',16
,'male'
,'12345@qq.com'
)## 訪問
s.name
s.age
s.***
from collections import counter
obj = counter(
'aabbccc'
(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]))
(ret)
#
from collections import orderddict
d = orderdict()d[
'jim']=
(1,35
)d['leo']=
(2,37
)d['bob']=
(3,48
(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個元素開始,...