激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python中itertools模塊使用小結

python中itertools模塊使用小結

2022-02-24 00:09嗨,阿良 Python

itertools 是python的迭代器模塊,itertools提供的生成迭代器的函數,相當高效且節省內存。使用這些工具,你將能夠創建自己定制的迭代器用于高效率的循環。接下來通過本文給大家介紹python中itertools模塊使用,感興趣的朋友一起看看

Python 內置的 itertools 模塊包含了一系列用來產生不同類型迭代器的函數或類,這些函數的返回都是一個迭代器,我們可以通過 for 循環來遍歷取值,也可以使用 next() 來取值。

itertools 模塊提供的迭代器函數有以下幾種類型:

  • 無限迭代器:生成一個無限序列,比如自然數序列 1, 2, 3, 4, ...;
  • 有限迭代器:接收一個或多個序列(sequence)作為參數,進行組合、分組和過濾等;
  • 組合生成器:序列的排列、組合,求序列的笛卡兒積等。

itertools

高效循環下創建循環器的標準庫

Infinite itertools,無限迭代器

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

默認返回一個從0開始,依次+10的自然數迭代器,如果你不停止,它會一直運行下去。
可以用start指定開始的位置,step是步長。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import itertools
 
c = itertools.count(start=0, step=1)
for i in c:
    print(i)
 
    
# 0
# 10
# 20
# 30
# 40
# 50
# ...

itertools.cycle(iterable)

傳入一個可迭代對象,然后無限循環迭代。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import itertools
 
# itertools.count()
l = [1,2,3,4,5]
c = itertools.cycle(l)
 
for i in c:
    print(i)
 
 
# 1
# 2
# 3
# 4
# 5
# 1
# 2
# 3
# 4
# 5
# ...

itertools.repeat(p_object, times=None)

重復迭代一個對象p_object,如果不指定times,則會迭代無數次,也可以通過times參數指定迭代的次數。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import itertools
 
# itertools.count()
l = [1,2,3,4,5]
c = itertools.repeat(l, 5)
 
for i in c:
    print(i)
 
 
# [1, 2, 3, 4, 5]
# [1, 2, 3, 4, 5]
# [1, 2, 3, 4, 5]
# [1, 2, 3, 4, 5]
# [1, 2, 3, 4, 5]

Iterators terminating on the shortest input sequence

itertools.accumulate(iterable, func)

返回序列的累計值或者其他二進制函數。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import itertools
 
# itertools.count()
l = [1,2,3,4,5]
c = itertools.accumulate(l)
 
print(c)
 
for i in c:
    print(i)
 
 
# 1
# 3
# 6
# 10
# 15

accumulate()仍然返回的是一個迭代器,傳一個list,在for循環中遍歷打印的時候發現,它做了累加操作。(迭代第一個數,就是前一個數的和,迭代到第二個數時,就是前兩個數的和,以此類推)

并且做遞加操作時支持:list, tuple, str, set, dict

傳入的是dict對象,那么會累加迭代dict的key:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import itertools
 
# itertools.count()
d = {'a': 1, 'b': 2, 'c': 3}
c = itertools.accumulate(d)
 
print(c)
 
for i in c:
    print(i)
 
 
# <itertools.accumulate object at 0x000001F7A0A90E48>
# a
# ab
# abc

itertools.chain(*iterables)

chain()方法中的參數可以傳入多個序列,而且只要是序列即可,不限定序列的數據類型。

如:迭代list, tuple, str三個序列

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import itertools
 
l = [1, 2, 3, 4, 5]
t = (1, 2, 3, 4, 5)
s = 'abcdefg'
c = itertools.chain(l, t, s)
 
print(c)
 
for i in c:
    print(i)
 
# <itertools.chain object at 0x0000026E64801448>
# 1
# 2
# 3
# 4
# 5
# 1
# 2
# 3
# 4
# 5
# a
# b
# c
# d
# e
# f
# g

itertools 笛卡爾積

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import itertools
 
d = [
    [{"a": 1}, {"b": 2}], [{"c": 3}, {"d": 4}, {"e": 5}], [{"f": 6}, {"g": 7}]
]
 
print(*d)
 
for i in itertools.product(*d):
    print(i)
 
# [{'a': 1}, {'b': 2}] [{'c': 3}, {'d': 4}, {'e': 5}] [{'f': 6}, {'g': 7}]
# ({'a': 1}, {'c': 3}, {'f': 6})
# ({'a': 1}, {'c': 3}, {'g': 7})
# ({'a': 1}, {'d': 4}, {'f': 6})
# ({'a': 1}, {'d': 4}, {'g': 7})
# ({'a': 1}, {'e': 5}, {'f': 6})
# ({'a': 1}, {'e': 5}, {'g': 7})
# ({'b': 2}, {'c': 3}, {'f': 6})
# ({'b': 2}, {'c': 3}, {'g': 7})
# ({'b': 2}, {'d': 4}, {'f': 6})
# ({'b': 2}, {'d': 4}, {'g': 7})
# ({'b': 2}, {'e': 5}, {'f': 6})
# ({'b': 2}, {'e': 5}, {'g': 7})

到此這篇關于python中的itertools模塊簡單使用的文章就介紹到這了,更多相關python itertools模塊使用內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/fengting0913/p/15504283.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成年人小视频在线观看 | 欧美日韩色| 一本色道久久99精品综合蜜臀 | 国产午夜精品久久久久久久蜜臀 | 久久99精品国产自在现线 | 一级黄色在线观看 | 中文字幕在线观看1 | 91成人一区二区三区 | 国产精品一区在线免费观看 | 在线成人www免费观看视频 | 天天色人人爱 | 欧美国产永久免费看片 | 国产成人强伦免费视频网站 | 国产羞羞视频在线免费观看 | 欧美黄色大片免费观看 | 欧美男人天堂网 | 男女无遮挡羞羞视频 | 久久网国产精品 | 草逼一区 | 高潮激情aaaaa免费看 | 激情小说另类 | 日本黄色大片免费 | 二区视频 | 久久αv | 久青草免费视频 | 99视频观看 | 久久影院免费观看 | 久久精品久久精品国产大片 | 日韩视频一区 | 国产精品视频专区 | 久草在线看片 | 美国一级黄色毛片 | 中国嫩模一级毛片 | 国产手机在线视频 | 羞羞的视频免费在线观看 | 成人不卡在线观看 | 99精品在线视频观看 | 奇米888一区二区三区 | 国产精品视频自拍 | 黄色av网站免费 | 成人在线观看免费观看 |