Python編程細節(一)

基本風格類

1. 多重賦值和多元賦值

多重賦值:x = y = z = 1
多元賦值:x, y, z = 1, 2, 'str'

2. Python命名中要避免關鍵字

查詢命名是否是關鍵字的方法:iskeyword()

Python對象

1. None對象

Python有一個特殊的類型,被稱爲NoneType,它不支持任何運算也沒有任何內建的方法。None沒有什麼有用的屬性,而且它的布爾值總是False。

2. Python提供了isis not兩個操作符來測試兩個變量是否指向同一個對象

a is b

3. 使用isinstance()函數可以讓我們的if語句更方便,並且具有更好的可讀性

if isinstance(num, int)...

字符串、列表和元組

1.使用in或者not in來判斷一個元素是否屬於一個序列

2.需要連接兩個類型相同序列的時候,儘量不使用’+’

爲了節約內存:
+ 對於字符串來說,吧所有的子字符串放到一個列表或者其他任何可以迭代的對象中,然後使用join()函數把他們連接在一起
+ 對於列表的連接來說,可以調用extend()

3.enumerate(iter)方法
接受一個可迭代的對象作爲參數,返回一個由參數的index值和item值組成的元組

s= enumerate('1234')
for index,item in s:
    print(index,',',item)

4.任何一個可迭代的對象中包含的元素,都可以通過賦值的方法分解爲單獨的變量

p = [1,2,3]
x,y,z = p

5.找到最大或者最小的N個元素,可以使用:

import headq
headq.nlargest(N,data)
headq.nsmallest(N,data)

6.slice()函數創建切片對象

slice對象內含start, stop, step三個屬性

7.Counter對列表內元素出現次數計數

from collections import Counter
Counter.most_common(N) # 最常出現的N個元素及其出現次數
Counter(list) # 對列表計數

Counter可以同各種運算操作結合起來使用,例如可以將兩個列表的元素聯合計數。

8.使用列表推導式對列表中的數據進行篩選

filter = n for n in myList if n > 0

9.使用filter()函數對目標進行篩選,但是首先要將篩選邏輯編寫成函數func()形式

filter = filter(func, values)

字典

1.使用for key in dict來直接訪問字典的鍵值循環

不需要再使用for key in dict.keys()

2.使用OrderedDict控制字典中元素的順序

from collections import OrderedDict
在迭代時,字典中元素的順序會嚴格按照元素添加的順序進行

3.使用zip()可以將字典的key和value反轉

zip(dict.values(),dict.keys())

4.如果想對字典的值進行計算,先用zip反轉,再用其他函數計算

5.用keys()或者items()配合運算符比較字典,包括找出相同值,不同值等等

6.用itemgetter對字典中某一個或某幾個鍵排序

from operator import itemgetter
sort_by_key1 = sorted(rows, key=itemgetter(key1)

也可以用lambda來取代itemgetter()

7.itertools.groupby()來對數據進行分組

from itertools import groupby

8.利用字典推導式從字典中提取子集

sub_dict = {key: value for key, value in dict.items() if value > 1}
sub_dict = {key: value for key, value in dict.items() if key in some_list}

9.ChainMap合併字典

from collections import ChainMap
dict1 = ChainMap(dict2, dict3)

條件和循環

1. 條件表達式可以表示成= x if x < y else y

2. 在不需要做任何事情的地方放一個pass

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章