Python高階部分?jǐn)U展 (collections ,itertools)

Python高階部分?jǐn)U展 (collections ,itertools)

python3 collections擴(kuò)展

可命名元組 :namedtuple

from collections import namedtuple
stock_namedtuple = nametuple('stock',(date,txt))
stock_namedtuple('20190712','sun')

# 輸出
stock(date='20190712'.txt='sun')

有序字典

from collections import OrderedDict

deque

deque是為了高效實(shí)現(xiàn)插入和刪除操作的雙向列表,適合用于隊(duì)列和棧:

from collections import deque
q = deque(['a', 'b', 'c'])
q.append('x')
q.appendleft('y')

# 輸出
deque(['y', 'a', 'b', 'c', 'x'])

defaultdict

使用dict時谅海,如果引用的Key不存在墩弯,就會拋出KeyError。如果希望key不存在時彩库,返回一個默認(rèn)值威蕉,就可以使用

from collections import defaultdict
dd = defaultdict(lambda: 'N/A')
dd['key1'] = 'abc'
dd['key1'] # key1存在
# 輸出
'abc'

dd['key2'] # key2不存在玻粪,返回默認(rèn)值
# 輸出
'N/A'

高階函數(shù)

map()函數(shù)接收兩個參數(shù),一個是函數(shù)项秉,一個是序列绣溜,map將傳入的函數(shù)依次作用到序列的每個元素,并把結(jié)果作為新的list返回娄蔼。

def f(x):
    return x * x
map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])

# 輸出
[1, 4, 9, 16, 25, 36, 49, 64, 81]
['1', '2', '3', '4', '5', '6', '7', '8', '9']

reduce() 把一個函數(shù)作用在一個序列[x1, x2, x3...]上怖喻,這個函數(shù)必須接收兩個參數(shù),reduce把結(jié)果繼續(xù)和序列的下一個元素做累積計(jì)算

def add(x, y):
    return x + y
reduce(add, [1, 3, 5, 7, 9])

# 輸出
25

filter() 接收一個函數(shù)和一個序列岁诉。和map()不同的時锚沸,filter()把傳入的函數(shù)依次作用于每個元素,然后根據(jù)返回值是True還是False決定保留還是丟棄該元素涕癣。

def is_odd(n):
    return n % 2 == 1

filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])

# 輸出
[1, 5, 9, 15]

itertools的應(yīng)用

permutations(),考慮順序組合元素

>>> import itertools
>>> a = [1, 2, 3]
>>> b = itertools.permutations(a)
>>> b

# 輸出
(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)

combinations() ,不考慮順序哗蜈,不放回?cái)?shù)據(jù)

import itertools
list1 = [1, 3, 4, 5]
list2 = list(itertools.combinations(list1, 2))
print(list2)

# 輸出
[(1, 3), (1, 4), (1, 5), (3, 4), (3, 5), (4, 5)]

st(itertools.combinations(list1, 2))
print(list2)

輸出

[(1, 3), (1, 4), (1, 5), (3, 4), (3, 5), (4, 5)]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市坠韩,隨后出現(xiàn)的幾起案子距潘,更是在濱河造成了極大的恐慌,老刑警劉巖只搁,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件音比,死亡現(xiàn)場離奇詭異,居然都是意外死亡氢惋,警方通過查閱死者的電腦和手機(jī)洞翩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門稽犁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人菱农,你說我怎么就攤上這事∈凉溃” “怎么了循未?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長秫舌。 經(jīng)常有香客問我的妖,道長,這世上最難降的妖魔是什么足陨? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任嫂粟,我火速辦了婚禮,結(jié)果婚禮上墨缘,老公的妹妹穿的比我還像新娘星虹。我一直安慰自己,他們只是感情好镊讼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布宽涌。 她就那樣靜靜地躺著,像睡著了一般蝶棋。 火紅的嫁衣襯著肌膚如雪卸亮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天玩裙,我揣著相機(jī)與錄音兼贸,去河邊找鬼。 笑死吃溅,一個胖子當(dāng)著我的面吹牛溶诞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播决侈,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼很澄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了颜及?” 一聲冷哼從身側(cè)響起甩苛,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎俏站,沒想到半個月后讯蒲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肄扎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年墨林,在試婚紗的時候發(fā)現(xiàn)自己被綠了赁酝。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡旭等,死狀恐怖酌呆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搔耕,我是刑警寧澤隙袁,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站弃榨,受9級特大地震影響菩收,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鲸睛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一娜饵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧官辈,春花似錦箱舞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至风瘦,卻和暖如春队魏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背万搔。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工胡桨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瞬雹。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓昧谊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親酗捌。 傳聞我的和親對象是個殘疾皇子呢诬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容