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

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

四個鮮為人知的Python迭代過濾函數

來源: 責編: 時間:2023-09-28 10:08:43 369觀看
導讀簡介在Python中,迭代器可以幫助你編寫更多Pythonic的代碼,并在處理長序列時提高效率。內置的itertools模塊提供了幾個有用的函數來創建迭代器。【itertools】:https://docs.python.org/3/library/itertools.html當你只需

簡介

在Python中,迭代器可以幫助你編寫更多Pythonic的代碼,并在處理長序列時提高效率。內置的itertools模塊提供了幾個有用的函數來創建迭代器。Smv28資訊網——每日最新資訊28at.com

【itertools】:https://docs.python.org/3/library/itertools.htmlSmv28資訊網——每日最新資訊28at.com

當你只需要遍歷迭代器、檢索序列中的元素并對其進行處理,而無需將它們存儲在內存中時,這些函數尤其有用。今天本文將學習如何使用以下四個itertools過濾函數:Smv28資訊網——每日最新資訊28at.com

  • filterfalse
  • takewhile
  • dropwhile
  • islice

接下來跟隨本文開始吧!Smv28資訊網——每日最新資訊28at.com

圖片圖片Smv28資訊網——每日最新資訊28at.com

在開始之前:關于代碼示例的說明

在本教程中:Smv28資訊網——每日最新資訊28at.com

我們將討論的所有四個函數都返回了迭代器。為了清楚起見,本文將使用簡單的序列,并使用list()獲取包含迭代器返回的所有元素的列表。但在處理長序列時,除非必要,否則請不要這樣做,因為這樣做會失去迭代器帶來的內存節省。Smv28資訊網——每日最新資訊28at.com

對于簡單的謂詞函數,也可以使用lambdas。但為了提高可讀性,本文將定義常規函數并將它們用作謂詞。Smv28資訊網——每日最新資訊28at.com

1. filterfalse

如果你在Python中編程已經有一段時間了,可能已經使用過內置的filter函數,語法如下:Smv28資訊網——每日最新資訊28at.com

filter(pred,seq)# pred:謂詞函數# seq:任何有效的Python可迭代對象

filter函數返回一個迭代器,該迭代器返回謂詞函數返回True的序列中的元素。Smv28資訊網——每日最新資訊28at.com

示例如下:Smv28資訊網——每日最新資訊28at.com

nums = list(range(1,11)) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]def is_even(n):    return n % 2 == 0

在這里,nums列表和is_even函數分別是序列和謂詞。Smv28資訊網——每日最新資訊28at.com

要獲取nums中所有偶數的列表,需要使用如下所示的filter:Smv28資訊網——每日最新資訊28at.com

nums_even = filter(is_even, nums)print(list(nums_even))
Output >>> [2, 4, 6, 8, 10]

現在跟隨本文來學習一下filterfalse。本文將從itertools模塊中導入filterfalse函數(以及本文將要討論的所有其他函數)。Smv28資訊網——每日最新資訊28at.com

正如其名稱所示,filterfalse執行與filter函數相反的操作。它返回一個迭代器,該迭代器返回謂詞返回False的元素。以下是使用filterfalse函數的語法:Smv28資訊網——每日最新資訊28at.com

from itertools import filterfalsefilterfalse(pred,seq)

is_even函數對于nums中的所有奇數返回False。因此,使用filterfalse得到的nums_odd列表是nums中所有奇數的列表:Smv28資訊網——每日最新資訊28at.com

from itertools import filterfalsenums_odd = filterfalse(is_even, nums)print(list(nums_odd))
Output >>> [1, 3, 5, 7, 9]

2. takewhile

使用takewhile函數的語法如下:Smv28資訊網——每日最新資訊28at.com

from itertools import takewhiletakewhile(pred,seq)

takewhile函數返回了一個迭代器,只要謂詞函數返回True,它就會返回元素。當謂詞函數第一次返回False時,它就停止返回元素。Smv28資訊網——每日最新資訊28at.com

對于長度為n的序列,如果seq[k]是第一個使謂詞函數返回False的元素,則迭代器會返回seq[0]、seq[1]、...、seq[k-1]。Smv28資訊網——每日最新資訊28at.com

考慮以下的nums列表和謂詞函數is_less_than_5。本文使用takewhile函數,如下所示:Smv28資訊網——每日最新資訊28at.com

from itertools import takewhiledef is_less_than_5(n):    return n < 5nums = [1, 3, 5, 2, 4, 6]filtered_nums_1 = takewhile(is_less_than_5, nums)print(list(filtered_nums_1))

在這里,謂詞is_less_than_5對于數字5首次返回False:Smv28資訊網——每日最新資訊28at.com

Output >>> [1, 3]

3. dropwhile

從功能上講,dropwhile函數的作用與takewhile函數相反。Smv28資訊網——每日最新資訊28at.com

以下是如何使用dropwhile函數的示例:Smv28資訊網——每日最新資訊28at.com

from itertools import dropwhiledropwhile(pred,seq)

dropwhile函數返回一個迭代器,只要謂詞為True,該迭代器就會持續刪除元素。也就是說,迭代器在謂詞第一次返回False之前不返回任何元素。一旦謂詞返回False,迭代器就會返回序列中的所有后續元素。Smv28資訊網——每日最新資訊28at.com

對于長度為n的序列,如果謂詞函數第一次返回False的元素是seq[k],那么迭代器會返回seq[k]、seq[k+1]、…、seq[n-1]。Smv28資訊網——每日最新資訊28at.com

接下來使用相同的序列和謂詞函數:Smv28資訊網——每日最新資訊28at.com

from itertools import dropwhiledef is_less_than_5(n):    return n < 5nums = [1, 3, 5, 2, 4, 6]filtered_nums_2 = dropwhile(is_less_than_5, nums)print(list(filtered_nums_2))

由于謂詞函數is_less_than_5第一次返回False是在元素5上,因此本文得到從5開始的序列中的所有元素:Smv28資訊網——每日最新資訊28at.com

Output >>> [5, 2, 4, 6]

4. islice

你可能已經熟悉了對Python可迭代對象(如列表、元組和字符串)進行切片操作。切片的語法是:iterable[start:stop:step]。Smv28資訊網——每日最新資訊28at.com

然而,這種切片操作具有以下缺點:Smv28資訊網——每日最新資訊28at.com

  • 在處理大型序列時,每個切片或子序列都是一個占用內存的副本,這可能會降低效率。
  • 由于步長也可以取負值,使用起始、停止和步長值會影響可讀性。

islice函數解決了上述限制:Smv28資訊網——每日最新資訊28at.com

  • 它返回一個迭代器。
  • 它不允許步長取負值。

可以按以下方式使用islice函數:Smv28資訊網——每日最新資訊28at.com

from itertools import isliceislice(seq,start,stop,step)

下面是使用islice函數的幾種不同方式:Smv28資訊網——每日最新資訊28at.com

  • 使用islice(seq, stop)函數返回一個迭代器,該迭代器遍歷切片seq[0]、seq[1]、...、seq[stop - 1]。
  • 如果指定了起始和停止值:islice(seq, start, stop),該函數會返回一個迭代器,該迭代器遍歷切片seq[start]、seq[start + 1]、...、seq[start + stop - 1]。
  • 當指定起始、停止和步長參數時,該函數返回一個迭代器,該迭代器遍歷切片seq[start]、seq[start + step]、seq[start + 2*step]、...、seq[start + k*step],其中start + k*step < stop且start + (k+1)*step >= stop。

接下來以一個示例列表來更好地理解這個問題:Smv28資訊網——每日最新資訊28at.com

nums = list(range(10)) #[0,1, 2, 3, 4, 5, 6, 7, 8, 9]

現在,跟隨本文使用已學過的islice函數的語法。Smv28資訊網——每日最新資訊28at.com

僅使用停止值

這里本文只指定停止索引:Smv28資訊網——每日最新資訊28at.com

from itertools import islice# 僅指定停止索引sliced_nums = islice(nums, 5)print(list(sliced_nums))

以下是輸出結果:Smv28資訊網——每日最新資訊28at.com

Output >>> [0, 1, 2, 3, 4]

使用起始和停止值

在這里,本文同時使用起始值和停止值:Smv28資訊網——每日最新資訊28at.com

# 指定起始和停止索引sliced_nums = islice(nums, 2, 7)print(list(sliced_nums))

切片從索引2開始,一直延伸到索引7但不包括索引7:Smv28資訊網——每日最新資訊28at.com

Output >>> [2, 3, 4, 5, 6]

使用起始、停止和步長值

當本文使用起始、停止和步長值時:Smv28資訊網——每日最新資訊28at.com

# 使用起始、停止和步長sliced_nums = islice(nums, 2, 8, 2)print(list(sliced_nums))

得到一個從索引2開始、一直延伸到索引8但不包括索引8的切片,步長為2(每隔一個元素返回一次))。Smv28資訊網——每日最新資訊28at.com

Output >>> [2, 4, 6]

總結

希望本教程能幫助你理解itertools過濾函數的基礎知識。通過查看一些簡單的示例,可以更好地理解這些函數的工作原理。Smv28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-11871-0.html四個鮮為人知的Python迭代過濾函數

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

上一篇: 越南獨立開發者的傳奇征程:從失業到創業成功

下一篇: 20個IntelliJ IDEA最常用的導航功能(下)

標簽:
  • 熱門焦點
  • Mate60手機殼曝光 致敬自己的經典設計

    8月3日消息,今天下午博主數碼閑聊站帶來了華為Mate60的第三方手機殼圖,可以讓我們在真機發布之前看看這款華為全新旗艦的大致輪廓。從曝光的圖片看,Mate 60背后攝像頭面積依然
  • 7月安卓手機好評榜:三星S23Ultra好評率第一

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年7月1日至7月31日,僅限國內市場。第一名:三星Galaxy S23 Ultra好評率:95.71%在即將迎來新
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數據的地方,是數據源的一種,比如大家經常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數據,它既可以保
  • JavaScript學習 -AES加密算法

    引言在當今數字化時代,前端應用程序扮演著重要角色,用戶的敏感數據經常在前端進行加密和解密操作。然而,這樣的操作在網絡傳輸和存儲中可能會受到惡意攻擊的威脅。為了確保數據
  • 一篇文章帶你了解 CSS 屬性選擇器

    屬性選擇器對帶有指定屬性的 HTML 元素設置樣式。可以為擁有指定屬性的 HTML 元素設置樣式,而不僅限于 class 和 id 屬性。一、了解屬性選擇器CSS屬性選擇器提供了一種簡單而
  • 國行版三星Galaxy Z Fold5/Z Flip5發布 售價7499元起

    2023年8月3日,三星電子舉行Galaxy新品中國發布會,正式在國內推出了新一代折疊屏智能手機三星Galaxy Z Fold5與Galaxy Z Flip5,以及三星Galaxy Tab S9
  • iQOO 11S屏幕細節公布:首發三星2K E6全感屏 安卓最好的直屏手機

    日前iQOO手機官方宣布,新一代電競旗艦iQOO 11S將會在7月4日19:00正式與大家見面。隨著發布時間的日益臨近,官方關于該機的預熱也更加密集,截至目前已
  • 微軟發布Windows 11新版 引入全新任務欄狀態

    近日,微軟發布了Windows 11新版,而Build 22563更新主要引入了幾周前曝光的平板模式任務欄等,系統更流暢了。更新中,Windows 11加入了專門針對平板優化的任務欄
  • 華為舉行春季智慧辦公新品發布會 首次推出電子墨水屏平板

    北京時間2月27日晚,華為在巴塞羅那舉行春季智慧辦公新品發布會,在海外市場推出之前已經在中國市場上市的筆記本、平板、激光打印機等辦公產品,并首次推出搭載
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲欧美日韩高清| 亚洲精品护士| 国产精品久久久久久久久婷婷| 国产精品v欧美精品v日韩| 国产女优一区| 亚洲电影免费在线| 一区二区欧美日韩| 久久精品成人一区二区三区蜜臀 | 美女精品在线观看| 欧美日韩综合在线| 国内久久视频| 在线亚洲激情| 久久久久国色av免费看影院| 欧美另类视频| 国产一二三精品| 日韩图片一区| 欧美在线视频a| 欧美日韩高清在线一区| 国产日韩在线一区二区三区| 91久久精品国产91久久性色| 欧美亚洲三区| 欧美激情第三页| 国产欧美视频一区二区三区| 亚洲欧洲综合| 久久av一区二区三区漫画| 欧美精品一区在线| 国产一区香蕉久久| 亚洲一区二区三区免费在线观看 | 欧美激情一区二区三区在线视频 | 亚洲一二三四区| 欧美99久久| 国产亚洲午夜| 中日韩美女免费视频网站在线观看| 久久人91精品久久久久久不卡| 欧美性色aⅴ视频一区日韩精品| 亚洲电影毛片| 久久精品欧美| 国产精品久久久久久久久久久久久久| 亚洲黄色av| 久久久久久久久久久一区| 国产精品乱人伦一区二区| 亚洲精品黄色| 蜜桃视频一区| 国产一区二区三区四区hd| 亚洲一区亚洲二区| 欧美日韩国产小视频| 亚洲成人资源| 久久久久国色av免费观看性色| 国产精品美女久久久久久2018| 亚洲精品久久久久| 看欧美日韩国产| 国产综合久久久久久鬼色| 午夜精品一区二区三区四区| 欧美视频在线免费| 亚洲老司机av| 欧美 日韩 国产 一区| 精品99一区二区| 久久成人18免费观看| 国产欧美婷婷中文| 亚洲欧美日韩爽爽影院| 欧美香蕉大胸在线视频观看| 亚洲精品黄色| 欧美成年人网| 亚洲电影欧美电影有声小说| 久久久久久亚洲精品杨幂换脸 | 久久综合久久88| 国产综合香蕉五月婷在线| 欧美综合国产| 国产欧美在线| 欧美一区二区三区四区在线 | 狠狠久久婷婷| 久久久久久亚洲精品杨幂换脸| 国产午夜精品久久| 午夜日韩激情| 国产欧美一区二区白浆黑人| 羞羞视频在线观看欧美| 国产欧美日本一区视频| 羞羞漫画18久久大片| 国产午夜精品久久久久久免费视| 欧美一区二区大片| 国产综合在线视频| 老鸭窝亚洲一区二区三区| 亚洲国产精品99久久久久久久久| 久久久久天天天天| 伊人狠狠色j香婷婷综合| 久久久久免费| 在线观看亚洲视频啊啊啊啊| 麻豆成人在线| 亚洲国产日韩欧美在线图片| 欧美精品一区二区三区很污很色的| 亚洲日本中文字幕免费在线不卡| 欧美精品久久99久久在免费线| 亚洲精品一区久久久久久| 欧美日韩蜜桃| 亚洲欧美高清| 国产原创一区二区| 免费亚洲婷婷| 一区二区欧美在线| 国产精品免费观看视频| 性做久久久久久免费观看欧美| 韩国精品主播一区二区在线观看| 免费av成人在线| 99国产精品久久久| 国产精品久久国产精麻豆99网站| 午夜影视日本亚洲欧洲精品| 极品尤物久久久av免费看| 欧美 日韩 国产一区二区在线视频| 亚洲精品中文字幕女同| 国产精品嫩草99av在线| 久久久久久久久久久成人| 亚洲人久久久| 国产精品久久久久久亚洲毛片| 欧美在线一二三区| 亚洲黄色免费网站| 国产精品美女久久久浪潮软件 | 久久久久久日产精品| 亚洲精品一区二区三区四区高清 | 国产一区白浆| 欧美精品三级| 午夜精品电影| 在线日本成人| 国产精品va在线播放| 久久精品主播| 99精品热6080yy久久| 国产欧美一区二区精品秋霞影院| 欧美1区免费| 亚洲在线观看免费视频| 在线高清一区| 国产精品入口尤物| 欧美成ee人免费视频| 亚洲欧美国产毛片在线| 悠悠资源网久久精品| 欧美日韩一二三区| 久久精品视频在线播放| 99视频精品在线| 国产字幕视频一区二区| 欧美日韩无遮挡| 久久深夜福利| 亚洲一区二区三区成人在线视频精品| 一色屋精品视频在线看| 国产精品男女猛烈高潮激情| 麻豆国产精品777777在线| 午夜精品福利一区二区蜜股av| 亚洲激情av在线| 国产亚洲网站| 欧美视频中文一区二区三区在线观看| 久久久水蜜桃| 亚洲免费网站| 99精品欧美一区二区三区| 狠狠色丁香婷婷综合久久片| 国产精品白丝黑袜喷水久久久| 另类春色校园亚洲| 午夜电影亚洲| 中文日韩欧美| 亚洲人成人99网站| 国色天香一区二区| 国产精品久久久久毛片软件| 欧美激情中文字幕乱码免费| 久久久噜噜噜久久中文字幕色伊伊 | 校园激情久久| 亚洲天堂男人| 亚洲日本va午夜在线影院| 黄色成人精品网站| 国产精品午夜av在线| 欧美天堂在线观看| 欧美国产三级| 久久一综合视频| 欧美在线影院在线视频| 亚洲在线国产日韩欧美| 一本色道久久综合亚洲91| 亚洲激情网站| 樱花yy私人影院亚洲| 亚洲精品国精品久久99热一| 亚洲精品乱码久久久久久| 国产日韩欧美一区二区三区四区| 欧美黄色一区| 久久久www成人免费精品| 亚洲一区二区三区四区五区黄| 最新中文字幕一区二区三区| 国产一区二区欧美日韩| 国产精品美女主播| 欧美日韩国产欧| 欧美韩日精品| 女人香蕉久久**毛片精品| 久久噜噜亚洲综合| 欧美一区免费视频| 亚洲欧美一区二区三区在线| 亚洲视频一区| 一区二区高清视频| 亚洲免费激情| 亚洲日本中文字幕免费在线不卡| 亚洲国产老妈| 亚洲激情在线| 91久久黄色| 亚洲欧洲在线一区| 亚洲国产小视频| 亚洲黄色一区二区三区| 亚洲激精日韩激精欧美精品| 亚洲国产欧美国产综合一区| 伊大人香蕉综合8在线视| 国产精品久久久久久久7电影| 欧美日韩日日夜夜| 欧美视频免费| 国产精品久久久久久妇女6080|