Python標準庫itertools模組

2021-09-12 08:51:48 字數 1638 閱讀 4233

我們知道,迭代器在python中是一種非常高效又好用的資料結構,迭代器的特點是可以做到惰性求值**(lazy evaluation的概念)** ,什麼意思呢?就是只有當迭代到某個值的時候它才會被計算產生,比如要遍歷乙個大檔案或者龐大的資料集時,使用傳統的遍歷就需要將它們一次性全部儲存在記憶體中,而使用迭代器顯而易見的好處則是每次只從物件中讀取一條資料,不會造成記憶體的過大開銷。

itertools中的函式大多是返回各種迭代器物件,其中很多函式的作用我們平時要寫很多**才能達到,而在執行效率上反而更低,所以直接使用現有系統庫才是明智之選。

來看看幾個非常有用的itertools庫里的方法。

accumulate()

accumulate()方法是用於計算累積的值,簡單的說就是累加:

from itertools import accumulate

for item in accumulate([1

,2,3

,4,5

]):print

(item)

# 輸出如下:

# 1# 3

# 6# 10

# 15

# 1

combinations()

combinations()方法可以返回允許重複的元素組合,第乙個引數輸入可迭代iterable型別,第二個引數輸入預期組合的個數。

from itertools import combinations

for i in combinations([1

,2,3

],2)

:print

(i)# 輸出如下:

# (1, 2)

# (1, 3)

# (2, 3)

如上例子可以發現,我們在1,2,3元素中,可以獲得(1,2)和(1,3)和(2,3)組合,這裡面順序組合是無關的。

cycle()

cycle()方法是無限的將它的引數之間迴圈迭代,直到人為停止。

from itertools import cycle

for item in cycle([1

,2,3

]):print

(item)

# 輸出如下:

# 1# 2

# 3

# 1# 2

# 3

# ......

# 1# 2

# 3

chain()

chain()方法可以連線多個列表或者迭代器。

from itertools import chain

for item in chain([1

,2,4

,'a'],

range(0

,5))

:print

(item)

# 輸出如下:

# 1# 2

# 4# a

# 0# 1

# 2# 3

# 4

itertools庫中還有不少方法函式,但是只有經常使用才能夠熟練,如上是一些比較常用的函式。

python標準庫 時間庫

眾所皆知,每乙個程式語言都有自己的時間類庫,python也不例外用法十分簡單 最基本的類,time類 time基本函式介紹 import time print time.asctime 如果未傳入乙個tuple或乙個time struct就是使用當前的時間,返回乙個24字長的時間字串 就這個mon ...

python標準庫 os庫

os模組主要用於跟作業系統打交道 os模組常用的方法 os.getcwd 獲取當前工作目錄,即當前python指令碼工作的目錄路徑 os.chdir dirname 改變當前指令碼工作目錄 相當於shell下cd os.curdir 返回當前目錄 os.pardir 獲取當前目錄的父目錄字串名 os...

不屬於python標準庫 Python標準庫概覽

總結 這個部分講了一些常用的python庫的方法。一下子也記不住,不過基本都自己敲了 試了試。os模組 os模組介紹了一些作業系統級別的方法 os.getcwd 得到當前工作目錄 os.chdir 改變工作目錄 os.system mkdir haha 建立資料夾haha 字串正則匹配 匯入re模組...