最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中itertools庫的四個函數(shù)介紹

 更新時間:2022年04月06日 11:28:53   作者:sgzqc  
這篇文章主要介紹了Python中itertools庫的四個函數(shù),主要討論itertools庫中的十分使用的幾個函數(shù),并重點介紹什么時候我們應(yīng)該考慮使用它們,需要的朋友可以參考一下

1. 引言

在Python開發(fā)中,??itertools??庫經(jīng)常被忽視,實際上該庫中抱恨了一些非常棒的函數(shù),特別是用于處于數(shù)據(jù)流的函數(shù)。在本文中,我們將討論該庫中的十分使用的幾個函數(shù),并重點介紹什么時候我們應(yīng)該考慮使用它們。
閑話少說,我們直接開始吧!

2. accumulate() 函數(shù)

第三方庫??itertools??提供的函數(shù)??accumulate()??,可以幫助我們對數(shù)據(jù)流執(zhí)行累積操作。換句話說,假設(shè)我們有一個數(shù)據(jù)列表[a,b,c,d,e]和一個運算f,那么函數(shù)??accumulate()??可以幫助我們計算??f(a,b)??,??f(f(a,b),c)??,??f(f(f(a,b),c),d)??,等等。
文字有點不直觀,那我們來舉個累加的栗子吧!

樣例代碼如下:

import itertools
data = [3, 4, 6, 2, 1, 9, 0, 7, 5, 8]

res = itertools.accumulate(data, lambda x,y:x+y)
print(list(res))
# [3, 7, 13, 15, 16, 25, 25, 32, 37, 45]

上述函數(shù)??accumulate()??的作用是:先把3和4相加,然后得到7,再和6相加,得到另一個值,依此類推。

需要注意的是:如果要執(zhí)行給定3個或更多值的累計操作,則不允許使用該函數(shù),因為accumulate()只接受迭代器,迭代器每次調(diào)用next()返回至多1個元素。

3. compress() 函數(shù)

函數(shù)??compress()??可以根據(jù)我們的喜好來過濾內(nèi)容。與函數(shù)??filter()??函數(shù)不同,函數(shù)??compress()??需要傳入相應(yīng)的標(biāo)志位來決定是否應(yīng)該保留每個值。

舉個例子會更加直觀,相關(guān)樣例代碼如下:

import itertools
data = [3, 4, 6, 2, 1, 9, 0, 7, 5, 8]
selector = [1, 0, 0, 0, 1, 1, 0, 1, 1, 0]
res = itertools.compress(data, selector)
print(list(res))
# [3, 1, 9, 7, 5]

在上面的示例中,如果數(shù)據(jù)是奇數(shù),則選擇器將為 1,否則為 0。因此,函數(shù)??compress()?? 操作的結(jié)果將只是保留原始數(shù)據(jù)中的奇數(shù)。

4. groupby() 函數(shù)

在許多情況下,我們會在 Python 中以隨機順序獲得一個元組列表,假如我們希望按值對它們進行分組。此時是函數(shù)?? groupby()?? 發(fā)揮作用的完美場景!

函數(shù)?? groupby()?? 將接受一個可迭代的參數(shù)和一個返回值的函數(shù),然后它將按函數(shù)返回的值對元組列表進行分組。

例如,我們想按國家對以下城市進行分組:

import itertools

data = [('New York', 'US'), ("Shanghai", "China"),
("LA", 'US'),("Chongqing", "China")]

for city, group in itertools.groupby(sorted(data, key=lambda x: x[1]), lambda x: x[1]):
for i in group:
print("%s is in %s." % (i[0], city))
print("")

# Shanghai is in China.
# Chongqing is in China.

# New York is in US.
# LA is in US.

5. 排列組合操作

排列組合可能是 ??itertools??庫中最令人驚嘆的函數(shù)之一,它提供了排列組合運算符!
我們唯一需要做的就是將正確的關(guān)鍵字與輸出元組的長度一起傳遞給相應(yīng)的函數(shù),

如下例所示:

import itertools
data = [3, 4, 6]

com_res = itertools.combinations(data, 2)
print(list(com_res))
# [(3, 4), (3, 6), (4, 6)]

com_res = itertools.permutations(data, 2)
print(list(com_res))
# [(3, 4), (3, 6), (4, 3), (4, 6), (6, 3), (6, 4)]

com_without_replacement_res = itertools.combinations_with_replacement(data, 2)
print(list(com_without_replacement_res))
# [(3, 3), (3, 4), (3, 6), (4, 4), (4, 6), (6, 6)]

product_res = itertools.product(data, data)
print(list(product_res))
# [(3, 3), (3, 4), (3, 6), (4, 3), (4, 4), (4, 6), (6, 3), (6, 4), (6, 6)]

6 總結(jié)

庫??itertools??對大多數(shù)人來說,是一個未被充分利用甚至很少聽到的庫,但它確實包含一些非常好用的函數(shù)。這些函數(shù)通常可以幫助我們將代碼行數(shù)減少到僅一行,使我們的代碼看起來更加簡潔優(yōu)雅!

到此這篇關(guān)于Python中itertools庫的四個函數(shù)介紹的文章就介紹到這了,更多相關(guān)Python中itertools庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用python的seaborn畫數(shù)值箱型圖

    用python的seaborn畫數(shù)值箱型圖

    大家好,本篇文章主要講的是用python的seaborn畫數(shù)值箱型圖,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Python編程實現(xiàn)簡易的音樂播放器基本操作

    Python編程實現(xiàn)簡易的音樂播放器基本操作

    這篇文章主要來教大家利用Python編程來實現(xiàn)一個簡易的音樂播放器,文中含有基本功能的操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Python10行代碼實現(xiàn)模擬百度搜索的示例

    Python10行代碼實現(xiàn)模擬百度搜索的示例

    本文主要介紹了Python10行代碼實現(xiàn)模擬百度搜索的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • python修改和新增字典中鍵值對的2種方法

    python修改和新增字典中鍵值對的2種方法

    這篇文章主要給大家介紹了關(guān)于python修改和新增字典中鍵值對的2種方法,在Python中字典是一系列鍵值對,每個鍵都與一個值相關(guān)聯(lián),與鍵相關(guān)聯(lián)的值可以是數(shù)、字符串、列表乃至字典,需要的朋友可以參考下
    2023-07-07
  • python實現(xiàn)百度語音識別api

    python實現(xiàn)百度語音識別api

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)百度語音識別api,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python實現(xiàn)RGB等圖片的圖像插值算法

    Python實現(xiàn)RGB等圖片的圖像插值算法

    這篇文章主要介紹了通過Python實先圖片的以下三種插值算法:最臨近插值法、線性插值法以及雙線性插值法。感興趣的小伙伴們可以了解一下
    2021-11-11
  • 如何在C++中調(diào)用Python

    如何在C++中調(diào)用Python

    雖然現(xiàn)在Python編程語言十分的火爆,但是實際上非要用一門語言去完成所有的任務(wù),并不是說不可以,而是不合適。在一些特定的、對于性能要求比較高的場景,還是需要用到傳統(tǒng)的C++來進行編程的。本文將用C++的代碼去調(diào)用Python函數(shù)中實現(xiàn)的一些功能
    2021-05-05
  • Python讀入mnist二進制圖像文件并顯示實例

    Python讀入mnist二進制圖像文件并顯示實例

    這篇文章主要介紹了Python讀入mnist二進制圖像文件并顯示實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python程序中的線程操作 concurrent模塊使用詳解

    python程序中的線程操作 concurrent模塊使用詳解

    這篇文章主要介紹了python程序中的線程操作 concurrent模塊使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 如何用python刪除csv文件中的某幾列或行

    如何用python刪除csv文件中的某幾列或行

    這篇文章主要給大家介紹了關(guān)于如何用python刪除csv文件中的某幾列或行的相關(guān)資料,在Python中我們常常需要對csv文件進行操作,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07

最新評論

吐鲁番市| 沈阳市| 乌兰察布市| 吉安市| 遵义县| 桃江县| 土默特右旗| 息烽县| 金秀| 曲松县| 赤城县| 南平市| 桃江县| 兰溪市| 临武县| 祁东县| 奉节县| 云龙县| 安福县| 开封县| 南京市| 渑池县| 鄱阳县| 抚松县| 民县| 望谟县| 南岸区| 麻城市| 轮台县| 门源| 隆昌县| 泾源县| 安塞县| 紫阳县| 略阳县| 铁岭县| 绿春县| 海宁市| 子长县| 迁安市| 东明县|