1. 程式人生 > >python常用方法詳解

python常用方法詳解

歷史 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常用方法詳解