成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

itertools模塊超實用方法

caohaoyu / 2354人閱讀

摘要:相信大家在學習的過程中都用到過這個模塊,但是可能只是用到了其中的一兩個方法,對于其更強大的功能沒有更深的認識。今天我就按照自己的方式向大家介紹一下這個模塊。

相信大家在學習python的過程中都用到過這個模塊,但是可能只是用到了其中的一兩個方法,對于其更強大的功能沒有更深的認識。今天我就按照自己的方式向大家介紹一下這個模塊。
groupby:用于分組

rows=[
    {"name":"jim","date":"07/01"},
    {"name":"tom","date":"07/01"},
    {"name":"rose","date":"07/01"},
    {"name":"tom","date":"07/02"},
    {"name":"jim","date":"07/03"},
    {"name":"rose","date":"07/02"},
]
#groupby只能對連續(xù)數(shù)據(jù)進行分組,因此不能確定數(shù)據(jù)有序的情況下,建議進行排序操作
gbrows=sorted(rows,key=itemgetter["date"])

for gbdata,row in gbrows(gbrows,key=itemgetter["date"])
    print(gbdata)
    for i in row:
        print(i)
        
#以下是輸出結果:
07/01/2018
{"name": "jim", "date": "07/01/2018"}
{"name": "tom", "date": "07/01/2018"}
{"name": "rose", "date": "07/01/2018"}
07/02/2018
{"name": "tom", "date": "07/02/2018"}
{"name": "rose", "date": "07/02/2018"}
07/03/2018
{"name": "jim", "date": "07/03/2018"}

permutations:按照給定位數(shù)對可迭代對象內(nèi)元素進行組合

listed = ["a","b","c","d"]

for i in permutations(listed,3):
    print(i)

#以下是輸出結果(由于結果比較多,我對格式進行了變化,但數(shù)據(jù)都是正確的)
("a", "b", "c") ("a", "b", "d") ("a", "c", "b") ("a", "c", "d") ("a", "d", "b") ("a", "d", "c")
("b", "a", "c") ("b", "a", "d") ("b", "c", "a") ("b", "c", "d") ("b", "d", "a")
("b", "d", "c")
("c", "a", "b") ("c", "a", "d") ("c", "b", "a") ("c", "b", "d") ("c", "d", "a") ("c", "d", "b")
("d", "a", "b") ("d", "a", "c") ("d", "b", "a") ("d", "b", "c") ("d", "c", "a") ("d", "c", "b")

combinations:按照給定位數(shù)對可迭代對象內(nèi)元素進行組合,但是結果不重復

listed = ["a","b","c","d"]

for i in combinations(listed,3):
    print(i)
#以下是輸出結果
("a", "b", "c")
("a", "b", "d")
("a", "c", "d")
("b", "c", "d")

combinations_with_replacement:與combinations區(qū)別就是同一元素可以使用多次

listed = ["a","b","c"]    #由于結果數(shù)據(jù)太多,我減少源數(shù)據(jù)量

for i in combinations_with_replacement(listed,3):
    print(i)
    
#以下是輸出結果
("a", "a", "a")
("a", "a", "b")
("a", "a", "c")
("a", "b", "b")
("a", "b", "c")
("a", "c", "c")
("b", "b", "b")
("b", "b", "c")
("b", "c", "c")
("c", "c", "c")

zip_longest:對多個數(shù)據(jù)按索引進行組合,并根據(jù)迭代對象的大小,不足使用fillvalue默認值替代

a=[1,2,3]
b=["a","b"]

for i in zip_longest(a,b,fillvalue="nihao"):
    print(i)
    
for i in zip(a,b):
    print(i)    
#zip是一個python內(nèi)置函數(shù),與zip_longest不同的是匹配到迭代對象最小的最后元素就結束
#結果對比:
zip_lengest:            zip:
    (1, "a")                (1, "a")
    (2, "b")                (2, "b")
    (3, "nihao")

dropwhile:對可迭代對象的元素依次進行函數(shù)過濾,遇到返回False的元素就停止

listed=[-1,0,-3,2,-5,4,2]

for i in dropwhile(lambda s:s<3,listed):
    print(i)
    
#輸出結果:
4
2

product:可以說是combinations的升級版,對多個序列進行組合,且無重復

list1=[1,2,3]
list2=[4,5]
list3=["a"]

for i in product(list1,list2,list3):
    print(i)
#結果:
(1, 4, "a")
(1, 5, "a")
(2, 4, "a")
(2, 5, "a")
(3, 4, "a")
(3, 5, "a")

islice:對迭代器,可迭代對象進行切片操作

iter=(i for i in range(10))

for i in islice(iter,0,10,2):
    print(i)
#結果為:
0
2
4
6
8

chain:對多個可迭代對象進行組合

list1=[1,2,3]

set1={"a","b"}

for i in chain(list1,set1):
    print(i)

總結:itertools這個模塊可以解決以后我們對多個iterable進行組合的問題。
更詳細的分類可以參考:https://segmentfault.com/a/11...

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://m.hztianpu.com/yun/42822.html

相關文章

  • Python 進階之路 (九) 再立Flag, 社區(qū)最全的itertools深度解析(上)

    摘要:例如,以下對兩個的相應元素求和這個例子很好的解釋了如何構建中所謂的迭代器代數(shù)的函數(shù)的含義。為簡單起見,假設輸入的長度可被整除。接受兩個參數(shù)一個可迭代的正整數(shù)最終會在中個元素的所有組合的元組上產(chǎn)生一個迭代器。 前言 大家好,今天想和大家分享一下我的itertools學習體驗及心得,itertools是一個Python的自帶庫,內(nèi)含多種非常實用的方法,我簡單學習了一下,發(fā)現(xiàn)可以大大提升工作...

    tuantuan 評論0 收藏0
  • python 好用的迭代兵器庫itertools,十八般兵器哪18般?

    摘要:三國時代著名的兵器鑒別家呂虔根據(jù)兵器的特點對漢武帝欽定的十八般兵器重新排列為九長九短。明代五雜俎和清代堅集兩書所載十八般兵器為弓弩槍刀劍矛盾斧鉞戟黃锏撾殳棍叉耙頭錦繩套索白打拳術。后人稱其為小十八般。 知識點 在古典小說和傳統(tǒng)評話中,常說武藝高強的人是十八般武藝樣樣精通...

    番茄西紅柿 評論0 收藏2637
  • python高級特性

    摘要:常規(guī)的使用來統(tǒng)計一段代碼運行時間的例子輸出結果總結其實是一門特別人性化的語言,但凡在工程中經(jīng)常遇到的問題,處理起來比較棘手的模式基本都有對應的比較優(yōu)雅的解決方案。 python的高級特性 名詞與翻譯對照表 generator 生成器 iterator 迭代器 collection 集合 pack/unpack 打包/解包 decorator 裝飾器 context manager ...

    yexiaobai 評論0 收藏0
  • Python實用技法第14篇:根據(jù)字段將記錄分組:itertools.groupby()

    摘要:上一篇文章實用技法第篇對自定義類對象排序下一篇文章實用技法第篇篩選序列中的元素需求 上一篇文章:Python實用技法第13篇:對自定義類對象排序:attrgetter下一篇文章:Python實用技法第15篇:篩選序列中的元素 1、需求

    zhaofeihao 評論0 收藏0
  • 經(jīng)驗拾憶(純手工)=> Python好用深度技能工具介紹

    摘要:單元素元祖這是整數(shù)這才是元祖也許這兩行,你們當時疑惑過,并且現(xiàn)在也都知道了,當然重點并不在這里。。雖然我水平很垃圾,但是我知道匿名函數(shù)有一種執(zhí)行方式叫做自執(zhí)行??窗?,這就是版的匿名函數(shù)自執(zhí)行方法。 單元素元祖: a = (1) # 這是整數(shù)1 a = (1,) # 這才是元祖 也許這兩行,你們當時疑惑過,并且現(xiàn)在也都知道了,當然重點并不在這里。。 我無聊的時候想過,為什么單...

    UnixAgain 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<