日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

itertools:用于處理可迭代對象的模塊

來源: 責編: 時間:2024-03-25 17:35:10 251觀看
導讀Python 有一個內置模塊 itertools,從名字可以看出它是專門用來處理可迭代對象的,那么它都支持哪些操作呢?一起來看一下吧。itertools.chain接收多個可迭代對象(或者迭代器)作為參數,返回一個迭代器。它會生成所有輸入迭代器

Python 有一個內置模塊 itertools,從名字可以看出它是專門用來處理可迭代對象的,那么它都支持哪些操作呢?一起來看一下吧。eE728資訊網——每日最新資訊28at.com

itertools.chain

接收多個可迭代對象(或者迭代器)作為參數,返回一個迭代器。它會生成所有輸入迭代器的元素,就好像這些元素來自一個迭代器一樣。eE728資訊網——每日最新資訊28at.com

import itertoolsc = itertools.chain([1, 2, 3], "abc", {"k1": "v1", "k2": "v2"})# 直接打印的話是一個對象print(c) """<itertools.chain object at 0x00000000029745F8>"""print(list(c)) """1 2 3 a b c k1 k2"""# 還可以使用 chain.from_iterable# 參數接收多個可迭代對象組成的一個可迭代對象c = itertools.chain.from_iterable(    [[1, 2, 3], "abc", {"k1": "v1", "k2": "v2"}])print(list(c)) """1 2 3 a b c k1 k2"""

eE728資訊網——每日最新資訊28at.com

itertools.zip_longest

從名字上可以看出,功能和內置的 zip 類似。確實如此,就是將多個可迭代對象對應位置的元素組合起來,像拉鏈(zip)一樣。只不過內置的 zip 是 "木桶原理",一方匹配到頭了,那么就不匹配了,而 zip_longest 是以長的那一方為基準。eE728資訊網——每日最新資訊28at.com

import itertools# 內置的 zip 是把多個迭代器對象中的每一個元素按照順序組合到一個元組中name = ["高老師", "豬哥", "S 佬"]where = ["江蘇", "北京", "深圳"]z = zip(name, where)print(z)"""<zip object at 0x00000257F3FEBEC0>"""print(list(z))"""[('高老師', '江蘇'), ('豬哥', '北京'), ('S 佬', '深圳')]"""# 但如果兩者長度不一致怎么辦?name = ["高老師", "豬哥", "S 佬", "xxx"]where = ["江蘇", "北京", "深圳"]print(list(zip(name, where)))"""[('高老師', '江蘇'), ('豬哥', '北京'), ('S 佬', '深圳')]"""# 可以看到,長度不一致的時候,當一方結束之后就停止匹配# 如果想匹配長的,那么可以使用 itertools 下面的 zip_longestprint(list(itertools.zip_longest(name, where))) """[('高老師', '江蘇'), ('豬哥', '北京'), ('S 佬', '深圳'), ('xxx', None)]"""# 默認使用 None 進行匹配,當然我們也可以指定內容print(list(itertools.zip_longest(name, where, fillvalue="中國")))"""[('高老師', '江蘇'), ('豬哥', '北京'), ('S 佬', '深圳'), ('xxx', '中國')]"""

eE728資訊網——每日最新資訊28at.com

itertools.islice

如果一個迭代器里面包含了很多元素,我們只想要一部分的話,可以使用 islice,按照索引從迭代器中返回所選擇的元素,并且得到的還是一個迭代器。eE728資訊網——每日最新資訊28at.com

import itertoolsnum = range(20)# 選擇 index=5 到 index=10(不包含)的位置s = itertools.islice(num, 5, 10)print(list(s))  # [5, 6, 7, 8, 9]# 選擇開頭到 index=5 的位置s = itertools.islice(num, 5)print(list(s))  # [0, 1, 2, 3, 4]# 選擇從 index=5 到 index=15(不包含)的位置,步長為 3s = itertools.islice(num, 5, 15, 3)print(list(s))  # [5, 8, 11, 14]

注意:islice 不支持負數索引,因為不知道迭代器有多長,除非全部讀取,可是那樣的話干嘛不直接轉為列表之后再用切片獲取呢?eE728資訊網——每日最新資訊28at.com

之所以使用 islice 這種形式,就是為了在不全部讀取的情況下,也能選擇出我們想要的部分,所以這種方式只支持從前往后,不能從后往前。eE728資訊網——每日最新資訊28at.com

itertools.tee

將一個可迭代對象拷貝 n 份。eE728資訊網——每日最新資訊28at.com

import itertoolsr = [1, 2, 3, 4, 5]i1, i2 = itertools.tee(r, 2)print(list(i1))  # [1, 2, 3, 4, 5]print(list(i2))  # [1, 2, 3, 4, 5]

eE728資訊網——每日最新資訊28at.com

itertools.counteE728資訊網——每日最新資訊28at.com

import itertools"""count(start=0, step=1) 返回一個迭代器,負責無限地生成連續的整數接收兩個參數:起始(默認為0)和步長(默認為1)等價于:def count(firstval=0, step=1):    x = firstval    while 1:        yield x        x += step"""# 起始值為 5,步長為 2c1 = itertools.count(5, 2)print(list(itertools.islice(c1, 5))) """[5, 7, 9, 11, 13]"""

eE728資訊網——每日最新資訊28at.com

itertools.cycle

import itertools"""cycle(iterable) 返回一個迭代器,會無限重復里面的內容,直到內存耗盡"""c2 = itertools.cycle("abc")print(list(itertools.islice(c2, 10)))"""['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a']"""

eE728資訊網——每日最新資訊28at.com

itertools.repeat

import itertools"""repeat(obj, times=None),無限重復 obj,除非指定 times"""# 重復指定的次數print(list(itertools.repeat("abc", 3))) """['abc', 'abc', 'abc']"""

eE728資訊網——每日最新資訊28at.com

itertools.dropwhile

刪除滿足條件的值,注意:是刪除。eE728資訊網——每日最新資訊28at.com

import itertoolsl = [1, 2, 3, 4, 5]drop_l = itertools.dropwhile(lambda x: x < 3, l)# 依舊返回迭代器print(drop_l) """<itertools.dropwhile object at 0x000001AD63AD0488>"""# 可以看到小于3的都被丟掉了print(list(drop_l))  """[3, 4, 5]"""

eE728資訊網——每日最新資訊28at.com

itertools.takewhile

這個和 filter 是一樣的,保留滿足條件的值。eE728資訊網——每日最新資訊28at.com

import itertoolsl = [1, 2, 3, 4, 5]take_l = itertools.takewhile(lambda x: x < 3, l)print(take_l) """<itertools.takewhile object at 0x000001D37F512948>"""print(list(take_l)) """[1, 2]"""filter_l = filter(lambda x: x < 3, l)print(list(filter_l))  """[1, 2]"""

eE728資訊網——每日最新資訊28at.com

itertools.compress

提供了另一種過濾可迭代對象元素的方法。eE728資訊網——每日最新資訊28at.com

import itertoolscondition = [True, False, True, True, False]data = [1, 2, 3, 4, 5]print(list(itertools.compress(data, condition))) """[1, 3, 4]"""# 除了指定 True 和 False,還可以使用 Python 其它類型的值# 會以其對應的布爾值作為判斷依據condition = [1, 0, "x", "x", {}]  print(list(itertools.compress(data, condition))) """[1, 3, 4]"""

eE728資訊網——每日最新資訊28at.com

itertools.accumulateeE728資訊網——每日最新資訊28at.com

accumulate 處理輸入的序列,得到一個類似于斐波那契的結果。eE728資訊網——每日最新資訊28at.com

import itertoolsprint(list(itertools.accumulate(range(5))))  """[0, 1, 3, 6, 10]"""print(list(itertools.accumulate("abcde")))  """["a", "ab", "abc", "abcd", "abcde"]"""# 所以這里的相加還要看具體的含義try:    print(list(itertools.accumulate([[1, 2], (3, 4)])))except TypeError as e:    print(e)      """    can only concatenate list (not "tuple") to list    """    # 這里就顯示無法將列表和元組相加# 當然也可以自定義data = [1, 2, 3, 4, 5]method = lambda x, y: x * yprint(list(itertools.accumulate(data, method))) """[1, 2, 6, 24, 120]"""# 可以看到這里的結果就改變了

eE728資訊網——每日最新資訊28at.com

itertools.producteE728資訊網——每日最新資訊28at.com

product 則是會將多個可迭代對象組合成一個笛卡爾積。eE728資訊網——每日最新資訊28at.com

import itertoolsprint(list(itertools.product([1, 2, 3], [2, 3]))) """[(1, 2), (1, 3), (2, 2), (2, 3), (3, 2), (3, 3)]"""

eE728資訊網——每日最新資訊28at.com

itertools.permutationseE728資訊網——每日最新資訊28at.com

import itertoolsdata = [1, 2, 3, 4]print(list(itertools.permutations(data)))# 根據排列組合,顯然是 A44,總共 4 * 3 * 2 * 1 = 24 種組合"""[(1, 2, 3, 4), (1, 2, 4, 3), (1, 3, 2, 4), (1, 3, 4, 2), (1, 4, 2, 3), (1, 4, 3, 2),(2, 1, 3, 4), (2, 1, 4, 3), (2, 3, 1, 4), (2, 3, 4, 1), (2, 4, 1, 3), (2, 4, 3, 1),(3, 1, 2, 4), (3, 1, 4, 2), (3, 2, 1, 4), (3, 2, 4, 1), (3, 4, 1, 2), (3, 4, 2, 1),(4, 1, 2, 3), (4, 1, 3, 2), (4, 2, 1, 3), (4, 2, 3, 1), (4, 3, 1, 2), (4, 3, 2, 1)]"""# 結果是 A42,總共 4 * 3 = 12 種組合print(list(itertools.permutations(data, 2)))"""[(1, 2), (1, 3), (1, 4),  (2, 1), (2, 3), (2, 4),  (3, 1), (3, 2), (3, 4),  (4, 1), (4, 2), (4, 3)]"""

eE728資訊網——每日最新資訊28at.com

itertools.combinationseE728資訊網——每日最新資訊28at.com

permutations 顯然是考慮了順序,相當于排列組合里面 A,而 combinations 只考慮元素是否一致,而不管順序,相當于排列組合里面的 C。eE728資訊網——每日最新資訊28at.com

import itertools# permutations 只要順序不同就看做一種結果# combinations 則保證只要元素相同就是同一種結果data = "abcd"print(list(itertools.combinations(data, 3)))  """[('a', 'b', 'c'), ('a', 'b', 'd'), ('a', 'c', 'd'), ('b', 'c', 'd')]"""# 如果拿抽小球來作比喻的話,顯然 combinations 是不放回的,也就是不會重復單個的輸入元素# 但有時候可能也需要考慮包含重復元素的組合,相當于抽小球的時候有放回# 對于這種情況,可以使用 combinations_with_replacementprint(list(itertools.combinations_with_replacement(data, 3)))"""[('a', 'a', 'a'), ('a', 'a', 'b'), ('a', 'a', 'c'), ('a', 'a', 'd'), ('a', 'b', 'b'),('a', 'b', 'c'), ('a', 'b', 'd'), ('a', 'c', 'c'), ('a', 'c', 'd'), ('a', 'd', 'd'),('b', 'b', 'b'), ('b', 'b', 'c'), ('b', 'b', 'd'), ('b', 'c', 'c'), ('b', 'c', 'd'),('b', 'd', 'd'), ('c', 'c', 'c'), ('c', 'c', 'd'), ('c', 'd', 'd'), ('d', 'd', 'd')]"""

eE728資訊網——每日最新資訊28at.com

以上就是該模塊的用法,但說實話,感覺大部分都沒啥卵用。eE728資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-79141-0.htmlitertools:用于處理可迭代對象的模塊

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 快速了解CSS表單尺寸屬性field-sizing

下一篇: Spring Boot郵件發送教程:步步為營,輕松實現圖片附件郵件!

標簽:
  • 熱門焦點
  • Find N3入網:最高支持16+1TB

    OPPO將于近期登場的Find N3折疊屏目前已經正式入網,型號為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • Raft算法:保障分布式系統共識的穩健之道

    1. 什么是Raft算法?Raft 是英文”Reliable、Replicated、Redundant、And Fault-Tolerant”(“可靠、可復制、可冗余、可容錯”)的首字母縮寫。Raft算法是一種用于在分布式系統
  • 把LangChain跑起來的三個方法

    使用LangChain開發LLM應用時,需要機器進行GLM部署,好多同學第一步就被勸退了,那么如何繞過這個步驟先學習LLM模型的應用,對Langchain進行快速上手?本片講解3個把LangChain跑起來
  • 只需五步,使用start.spring.io快速入門Spring編程

    步驟1打開https://start.spring.io/,按照屏幕截圖中的內容創建項目,添加 Spring Web 依賴項,并單擊“生成”按鈕下載 .zip 文件,為下一步做準備。請在進入步驟2之前進行解壓。圖
  • 東方甄選單飛:有些鳥注定是關不住的

    作者:彭寬鴻來源:華爾街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;東方甄選創始人俞敏洪帶隊的&ldquo;7天甘肅行&rdquo;直播活動已在近日順利收官。成立后一
  • 華為HarmonyOS 4.0將于8月4日發布 或搭載AI大模型技術

    華為宣布HarmonyOS4.0將于8月4日正式發布。此前,華為已經針對開發者公布了HarmonyOS4.0,以便于開發者提前進行適配,也因此被曝光出了一些新系統的特性
  • 2納米決戰2025

    集微網報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領先地位的英特爾,甚至初成立不久的新
  • Android 14發布:首批適配機型公布

    5月11日消息,谷歌在今天凌晨舉行了I/O大會,本次發布會谷歌帶來了自家的AI語言模型PaLM 2、谷歌Pixel Fold折疊屏、谷歌Pixel 7a手機,同時發布了Androi
  • 質感不錯!OPPO K11渲染圖曝光:旗艦IMX890傳感器首次下放

    一直以來,OPPO K系列機型都保持著較為均衡的產品體驗,歷來都是2K價位的明星機型,去年推出的OPPO K10和OPPO K10 Pro兩款機型憑借各自的出色配置,堪稱有
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
在线综合欧美| 国产尤物精品| 欧美大片免费久久精品三p | 久久精品国产亚洲高清剧情介绍| 久久成人免费| 毛片基地黄久久久久久天堂| 欧美大片一区二区三区| 欧美体内she精视频| 国产精品普通话对白| 黑人操亚洲美女惩罚| 亚洲区中文字幕| 亚洲综合第一| 久久久久久久一区二区| 欧美成人在线网站| 国产精品久久久久91| 国产在线精品一区二区夜色| 亚洲人体影院| 亚洲男人的天堂在线aⅴ视频| 久久久久五月天| 欧美激情乱人伦| 国产美女扒开尿口久久久| 在线成人av.com| 亚洲一区二区精品在线| 久久一二三区| 国产精品第13页| 亚洲福利国产| 午夜一区不卡| 欧美伦理a级免费电影| 国产一区二区三区四区五区美女| 亚洲免费电影在线观看| 欧美在线观看视频| 欧美日韩亚洲国产精品| 激情亚洲一区二区三区四区| 一区二区三区四区精品| 蜜桃av噜噜一区| 国产精品揄拍500视频| 亚洲精品乱码久久久久久久久| 先锋亚洲精品| 欧美日韩国产在线| 一区二区三区在线不卡| 亚洲欧美在线免费| 欧美伦理91i| 在线观看日韩av| 校园激情久久| 欧美性理论片在线观看片免费| 在线视频国内自拍亚洲视频| 亚洲欧美精品| 欧美日韩hd| 亚洲国产成人porn| 久久黄色影院| 国产精品一区亚洲| 一本色道久久88综合日韩精品| 毛片av中文字幕一区二区| 国产日韩欧美在线观看| 亚洲深夜影院| 欧美精品在线一区二区| 亚洲第一综合天堂另类专| 欧美在线观看视频一区二区| 国产精品va在线播放| 91久久视频| 开心色5月久久精品| 国产亚洲视频在线| 亚洲欧美综合网| 国产精品国产三级国产普通话蜜臀| 亚洲黑丝一区二区| 老色鬼久久亚洲一区二区| 韩国成人福利片在线播放| 欧美一区二区三区啪啪| 国产精品久久综合| 亚洲伊人色欲综合网| 欧美视频中文一区二区三区在线观看| 亚洲精品日产精品乱码不卡| 欧美成人免费视频| 亚洲黄页一区| 欧美激情四色| 亚洲精品一线二线三线无人区| 欧美粗暴jizz性欧美20| 亚洲国内在线| 欧美国产日韩在线观看| 亚洲片在线资源| 欧美激情第10页| 亚洲人成绝费网站色www| 欧美成人免费大片| 亚洲精品国产精品久久清纯直播 | 国产视频在线一区二区| 午夜精品久久久久影视| 国产精品视频不卡| 亚洲欧美区自拍先锋| 国产精品美女午夜av| 亚洲欧美日韩综合一区| 国产精品久久中文| 亚洲欧美精品在线观看| 国产精品一区二区在线| 性欧美超级视频| 国产日韩欧美在线播放不卡| 欧美一区二区私人影院日本 | 欧美日韩视频在线观看一区二区三区 | 国产欧美亚洲精品| 久久国产精品一区二区| 国语自产精品视频在线看一大j8 | 久久精品国产亚洲一区二区| 激情视频一区二区| 美女国产一区| 亚洲精品亚洲人成人网| 欧美日韩亚洲免费| 亚洲一区二区三区在线视频| 国产精品尤物福利片在线观看| 日韩视频在线你懂得| 欧美日韩综合精品| 亚洲欧美资源在线| 国产在线观看91精品一区| 老鸭窝亚洲一区二区三区| 91久久久久久国产精品| 欧美日韩精品一区二区天天拍小说 | 欧美激情精品久久久久久久变态 | 夜夜爽av福利精品导航| 国产精品人人爽人人做我的可爱| 香蕉久久国产| 好吊色欧美一区二区三区四区| 免费成人高清| 一本到高清视频免费精品| 国产欧美日韩三级| 久久手机免费观看| 日韩性生活视频| 欧美午夜欧美| 久久久久久久久久久成人| 亚洲黄色视屏| 国产精品久久久久久久久久尿| 久久精品国产2020观看福利| 亚洲国产一区二区三区a毛片 | 黄色成人在线免费| 欧美精品久久久久久久久老牛影院 | 亚洲一区二区网站| 国内精品久久久| 欧美另类综合| 欧美一区二区三区男人的天堂| 在线高清一区| 国产精品极品美女粉嫩高清在线| 久久九九99视频| 日韩一本二本av| 国产日韩欧美综合| 欧美激情第三页| 午夜亚洲福利| 最近中文字幕日韩精品| 国产精品天美传媒入口| 免费观看日韩av| 亚洲一区二区成人在线观看| 尤物网精品视频| 国产精品美女久久久| 欧美高清视频一区| 久久精品123| 国产精品99久久99久久久二8| 激情久久影院| 国产精品腿扒开做爽爽爽挤奶网站| 麻豆免费精品视频| 午夜视频久久久久久| 亚洲精品免费观看| 国产一区二区三区电影在线观看| 欧美日韩国产黄| 久久久噜噜噜久噜久久 | 亚洲欧美日韩国产一区二区| 亚洲激情在线观看| 国产日韩一区欧美| 欧美日韩精品一区二区三区| 久久天天综合| 亚洲欧美中文日韩在线| 99精品国产99久久久久久福利| 国产自产女人91一区在线观看| 欧美性开放视频| 欧美承认网站| 久久另类ts人妖一区二区| 亚洲一区二区视频在线观看| 亚洲欧洲一级| 影音先锋另类| 国产视频一区免费看| 国产精品成人在线观看| 欧美成人精品在线| 久久久青草婷婷精品综合日韩| 亚洲欧美中文日韩v在线观看| 一本色道久久99精品综合 | 国产日韩欧美日韩| 欧美性猛片xxxx免费看久爱| 欧美激情中文字幕一区二区| 久久亚洲不卡| 欧美一区二区三区免费观看视频| 亚洲在线免费观看| 99视频一区| 亚洲狼人综合| 最新高清无码专区| 亚洲国产精品一区二区第四页av| 国产专区综合网| 国产亚洲精品福利| 国产婷婷色一区二区三区四区| 国产精品免费视频xxxx| 欧美视频国产精品| 欧美日韩伦理在线| 欧美另类变人与禽xxxxx| 欧美激情精品久久久久| 欧美高清一区二区| 欧美韩日精品| 欧美了一区在线观看| 欧美日本韩国一区| 欧美日韩色婷婷| 欧美视频不卡中文|