python常用方法詳解
阿新 • • 發佈:2018-01-20
歷史 lis 單獨 tool ems usr port amp prot
1,講序列分解為單獨的變量
p=(4,5) x,y=p print(x,y)
如果在分解中想丟棄某些特定的值,可以采用_來進行
data=[‘A‘,‘B‘,‘c‘,‘d‘] _,name,age,_=data print(_) print(name) print(age)
2.從任意長度的可叠代對象中分解元素
1>假設一門課程,我們需要去掉第一個成績,和最後一個成績,只取中間的數據的平均值,那麽可以用*來進行處理
line="nobody:*:-2:-2:yyyyyy:/var/empty:/usr/bin/fale" uname,*fields,homedir,sh=line.split(":")
3,保存最後N個元素
如果在處理過程中,對最後幾項做一個有限的歷史記錄。我們可以用collections裏面的deque,當我們設置最大長度的,它會自動清除時間比較長的數據
from collections import deque #maxlen最大可以有3個值 k=deque(maxlen=3) k.append(1) k.append(3) k.append(2) print(k) k.append(4) print(k)
4,找打最大或最小的N個元素
我們想在某個幾個中找到最大和最小的幾個元素,這裏主要說明的是heapq模塊,裏面有2個函數nlargest和nsmallest
import heapq nums=[1,8,2,23,7,-4,18,23,42,37,2] print(heapq.nlargest(3,nums)) #最大的三位數 print(heapq.nsmallest(3,nums)) #最小的三位數
protfollo=[ {‘name‘:‘IBM‘,‘share‘:100,‘price‘:91.1}, {‘name‘:‘uuu‘,‘share‘:112,‘price‘:100}, {‘name‘:‘db‘,‘share‘:333,‘price‘:67}, {‘name‘:‘tt‘,"share":222,"price":454} ] # k=lambda x:x[‘price‘] # print(k({‘name‘:‘IBM‘,‘share‘:100,‘price‘:91.1})) import heapq num=heapq.nsmallest(3,protfollo,key=lambda x:x[‘price‘]) print(num)
5,在字典中將鍵映射到多個值上,可以用defaultdict
from collections import defaultdict m=defaultdict(list) m[‘a‘].append(1) m[‘a‘].append(5) m[‘b‘].append(2) m[‘5‘].append(3) print(m)
6,與字典有關的計算問題
price={ ‘ACE‘:45.23,‘AApl‘:612,‘SSS‘:205,‘IBM‘:37 } min_price=min(zip(price.values(),price.keys())) print(min_price) man_price=max(zip(price.values(),price.keys())) print(man_price) sort_obj=sorted(zip(price.keys(),price.values())) print(sort_obj)
7,在兩個字典中尋找相同點
主要是字典的keys 和 item 也可以做集合的交集並集等運算 a={‘x‘:1,‘y‘:2,‘z‘:3} b={‘w‘:10,‘x‘:11,‘y‘:2} print(a.keys() & b.keys()) #{‘y‘, ‘x‘} print(a.keys() - b.keys()) #{‘z‘} print(a.items() & b.items()) #{(‘y‘, 2)}
8,找出序列中出現次數最多的元素 Counter 函數
9,通過公共鍵對字典列表排序,,這裏面用到啦itemgetter函數
from operator import itemgetter rows=[ {‘fname‘:‘brian‘,‘lname‘:‘jones‘,‘uid‘:1003}, {‘fname‘:‘rrr‘,‘lname‘:‘jjjj‘,‘uid‘:1002}, {‘fname‘:‘bbb‘,‘lname‘:‘kkk‘,‘uid‘:1004}, {‘fname‘:‘nnn‘,‘lname‘:‘llll‘,‘uid‘:1001}, {‘fname‘:‘mmm‘,‘lname‘:‘fff‘,‘uid‘:1005}, ] mink=sorted(rows,key=lambda x:x[‘uid‘]) print(mink) mink=sorted(rows,key=itemgetter(‘uid‘)) print(mink)
10,根據字段將記錄分組 itertool.groupby()
rows=[ {‘address‘:‘beijing‘,‘date‘:‘07/01/2012‘}, {‘address‘:‘shanghao‘,‘date‘:‘07/01/2012‘}, {‘address‘:‘hangzhou‘,‘date‘:‘07/02/2012‘}, {‘address‘:‘suzhou‘,‘date‘:‘07/02/2012‘}, {‘address‘:‘nanjing‘,‘date‘:‘07/03/2012‘}, {‘address‘:‘xian‘,‘date‘:‘07/04/2012‘}, ] from itertools import groupby from operator import itemgetter print(itemgetter(‘data‘))
11,將名字映射到序列的元素中 namedtuple方法
python常用方法詳解