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"
)
:
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
)
:
each
輸出:
(
"a"
,
"b"
)
(
"a"
,
"c"
)
(
"b"
,
"c"
)
itertools.combinations_with_replacement(iterable, r)
返回指定長度的「組合」,組合內元素可重複 例如:
import
itertools
for
each
in
itertools
.
combinations_with_replacement
(
"abc"
,
2
)
:
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
)
:
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
)
:
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
])
:
each
輸出:
a
c
itertools.count(start=0,step=1)
返回以start開始,step遞增的序列,無限遞增 例如:
import
itertools
for
each
in
itertools
.
count
(
start
=
0
,
step
=
2
)
:
each
輸出:
1
2
3
.
.
itertools.cycle(iterable)
將迭代器進行無限迭代 例如:
import
itertools
for
each
in
itertools
.
cycle
(
"ab"
)
:
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
])
:
each
輸出:
6
8
2
1
itertools.groupby(iterable[,key])
返回一組(key,itera),key為iterable的值,itera為等於key的所有項 例如:
import
itertools
for
key
,
vale
in
itertools
.
groupby
(
"aabbbc"
)
:
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
))
:
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
))
:
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
))
:
value
輸出:
5
7
9
itertools.islice(iterable, start,stop[,step])
相當於迭代器方式的切片操作 例如:
import
itertools
for
value
in
itertools
.
islice
(
"abcdefg"
,
1
,
4
,
2
)
:
value
輸出:
b
d
itertools.repeat(object,[,times])
不停的返回object對象,如果指定了times,則返回times次 例如:
import
itertools
for
value
in
itertools
.
repeat
(
"a"
,
2
)
:
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
)])
:
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
])
:
value
輸出:
1
3
看完本文有收穫?請轉
發分享給更多人
關注「P
ython開發者」,提升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模塊