當前位置:
首頁 > 知識 > Python標準庫:itertools模塊

Python標準庫:itertools模塊

(點擊

上方藍字

,快速關注我們)




來源:j_hao104 


my.oschina.net/jhao104/blog/761432


如有好文章投稿,請點擊 → 這裡了解詳情




簡介



官方描述:Functional tools for creating and using iterators.即用於創建高效迭代器的函數。




itertools.chain(*iterable)




將多個序列作為一個單獨的序列返回。 例如:





import

 

itertools


for

 

each 

in

 

itertools

.

chain

(

"i"

,

 

"love"

,

 

"python"

)

:


    

print

 

each



輸出:





i


l


o


v


e


p


y


t


h


o


n




itertools.combinations(iterable, r)



返回指定長度的」組合」 例如:





import

 

itertools


for

 

each 

in

 

itertools

.

combinations

(

"abc"

,

 

2

)

:


    

print

 

each




輸出:





(

"a"

,

 

"b"

)


(

"a"

,

 

"c"

)


(

"b"

,

 

"c"

)




itertools.combinations_with_replacement(iterable, r)




返回指定長度的「組合」,組合內元素可重複 例如:





import

 

itertools


for

 

each 

in

 

itertools

.

combinations_with_replacement

(

"abc"

,

 

2

)

:


    

print

 

each




輸出:





(

"a"

,

 

"a"

)


(

"a"

,

 

"b"

)


(

"a"

,

 

"c"

)


(

"b"

,

 

"b"

)


(

"b"

,

 

"c"

)


(

"c"

,

 

"c"

)




itertools.product(*iterable[,repeat])




返回指定長度的所有組合,可理解為笛卡爾乘積 例如:





import

 

itertools


for

 

each 

in

 

itertools

.

product

(

"abc"

,

 

repeat

=

2

)

:


    

print

 

each





(『a』, 『a』) (『a』, 『b』) (『a』, 『c』) (『b』, 『a』) (『b』, 『b』) (『b』, 『c』) (『c』, 『a』) (『c』, 『b』) (『c』, 『c』)




itertools.premutations(iteravle[,r])




返回長度為r的排列 例如:





import

 

itertools


for

 

value 

in

 

itertools

.

permutations

(

"abc"

,

 

2

)

:


    

print

 

value




輸出:





(

"a"

,

 

"b"

)


(

"a"

,

 

"c"

)


(

"b"

,

 

"a"

)


(

"b"

,

 

"c"

)


(

"c"

,

 

"a"

)


(

"c"

,

 

"b"

)




itertools.compress(data,selector)




返回selector為True的data對應元素 例如:





import

 

itertools


for

 

each 

in

 

itertools

.

compress

(

"abcd"

,

 

[

1

,

 

0

,

 

1

,

 

0

])

:


    

print

 

each




輸出:





a


c




itertools.count(start=0,step=1)




返回以start開始,step遞增的序列,無限遞增 例如:





import

 

itertools


for

 

each 

in

 

itertools

.

count

(

start

=

0

,

 

step

=

2

)

:


    

print

 

each




輸出:





1


2


3


.


.




itertools.cycle(iterable)




將迭代器進行無限迭代 例如:





import

 

itertools


for

 

each 

in

 

itertools

.

cycle

(

"ab"

)

:


    

print

 

each




輸出:





a


b


a


b


.


.




itertools.dropwhile(predicate, iterable)




直到predicate為真,就返回iterable後續數據, 否則drop掉 例如:





import

 

itertools


for

 

each 

in

 

itertools

.

dropwhile

(

lambda

 

x

x

<

5

,

 

[

2

,

1

,

6

,

8

,

2

,

1

])

:


    

print

 

each




輸出:





6


8


2


1




itertools.groupby(iterable[,key])




返回一組(key,itera),key為iterable的值,itera為等於key的所有項 例如:





import

 

itertools


for

 

key

,

 

vale 

in

 

itertools

.

groupby

(

"aabbbc"

)

:


    

print

 

key

,

 

list

(

vale

)




輸出:





a

 

[

"a"

,

 

"a"

]


b

 

[

"b"

,

 

"b"

,

 

"b"

]


c

 

[

"c"

]




itertools.ifilter(predicate, iterable)




返回predicate結果為True的元素迭代器,如果predicate為None,則返回所有iterable中為True的項 例如:





import

 

itertools


for

 

value 

in

 

itertools

.

ifilter

(

lambda

 

x

x

 % 

2

,

 

range

(

10

))

:


    

print

 

value




輸出:





1


3


5


7


9




itertools.ifilterfasle(predicate,iterable)




返回predicate為False的元素,如果predicate為None,則返回所有iterable中為False的項 例如:





import

 

itertools


for

 

value 

in

 

itertools

.

ifilterfalse

(

lambda

 

x

x

 % 

2

,

 

range

(

10

))

:


    

print

 

value




輸出:





0


2


4


6


8




itertools.i

map(function,*iterables)




相當於迭代器方式的map() 例如:





import

 

itertools


for

 

value 

in

 

itertools

.

imap

(

lambda

 

x

,

 

y

x

+

y

,

 

(

1

,

2

,

3

),

 

(

4

,

5

,

6

))

:


    

print

 

value




輸出:





5


7


9




itertools.islice(iterable, start,stop[,step])




相當於迭代器方式的切片操作 例如:





import

 

itertools


for

 

value 

in

 

itertools

.

islice

(

"abcdefg"

,

 

1

,

 

4

,

 

2

)

:


    

print

 

value




輸出:





b


d




itertools.repeat(object,[,times])




不停的返回object對象,如果指定了times,則返回times次 例如:





import

 

itertools


for

 

value 

in

 

itertools

.

repeat

(

"a"

,

 

2

)

:


    

print

 

value




輸出:





a


a




itertools.starmap(function,iterable)




返回function(iter)的值,iter為iterable的元素 例如:





import

 

itertools


for

 

value 

in

 

itertools

.

starmap

(

lambda

 

x

,

 

y

x

 * 

y

,

 

[(

1

,

 

2

),

 

(

3

,

 

4

)])

:


    

print

 

value




輸出:





2


12




itertools.takewhile(predicate,iterable)




如果predicate為真,則返回iterable元素,如果為假則不再返回,break. 例如:





import

 

itertools


for

 

value 

in

 

itertools

.

takewhile

(

lambda

 

x

x

 < 

5

,

 

[

1

,

 

3

,

 

5

,

 

6

])

:


    

print

 

value




輸出:





1


3




看完本文有收穫?請轉

發分享給更多人


關注「P

ython開發者」,提升Python技能


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python開發者 的精彩文章:

Python vs Ruby: 誰是最好的 web 開發語言?
學慣用 Python 編程時要避免的 3 個錯誤
如何開發一個 PyCharm 插件

TAG:Python開發者 |

您可能感興趣

Python 模塊 urllib.parse
Python模塊——contextlib和urllib
python的模塊module介紹
Mixed Reality Toolkit-Unity開發系列—Sharing模塊
Python"ipaddress" 模塊之概述
全掌 Boost+穩定模塊!adidas Originals 新鞋型 Tresc Run 登場
Python的hashlib模塊和hmac模塊
Bosch Rexroth_Timer診斷模塊——小顯示屏
python基礎之變數類型number(math模塊)
【Modular Multi-Mission Aircraft】空客A320neo模塊化多任務解決方案
Nginx image_filter圖片動態縮略模塊
高效的 itertools 模塊
Python-GUI Tkinter模塊
Pycharm 導入 Python 包、模塊
一文概述用 python 的 scikit-image 模塊進行圖像分割
Python os模塊的使用
Python 模塊學習:random 隨機數生成
python標準庫:base64 模塊
利用ngx_python模塊嵌入到Python腳本
Additive Works推出用於生成3D列印支撐的新Amphyon模塊