基本風格類
1. 多重賦值和多元賦值
多重賦值:x = y = z = 1
多元賦值:x, y, z = 1, 2, 'str'
2. Python命名中要避免關鍵字
查詢命名是否是關鍵字的方法:iskeyword()
Python對象
1. None對象
Python有一個特殊的類型,被稱爲NoneType,它不支持任何運算也沒有任何內建的方法。None沒有什麼有用的屬性,而且它的布爾值總是False。
2. Python提供了is
和is 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