Python 中的迭代器函數 |設置2(islice(),starmap(),tee()..)

| |

1. islice(可迭代、啟動、停止、步進):—此迭代器 選擇性地打印在其可迭代容器中引用的值 作為參數傳遞。這個迭代器接受 4 個參數、一個迭代容器、開始位置、結束位置和步幅。

2. starmap (func., List of tuples) : —這個迭代器接受一個函數和一個元組列表作為參數,並根據列表中每個元組的函數返回一個值。

# Python 代碼來演示它是如何工作的
# islice() 和starmap()


#import & quot; itertools & quot;用於迭代器操作

import itertools


# 初始化列表

li = [ 2 , 4 , 5 , 7 , 8 , 10 , 20 ]


# 初始化元組列表

li1 = [( 1 , 10 , 5 ), ( 8 , 4 , 1 ), ( 5 , 4 , 9 ), ( 11 代碼> , 10 , 1 )]


# 使用 islice ( ) 根據需要對列表進行切片
# 從第 2 個索引開始打印到第 6 個 skip 2

print ( "切片後的列表值為:" , end = "")

print ( list (itertools.islice (li, 1 , 6 , 2 ) ))


#使用starmap()選擇一個值 acc. function
# 選擇所有元組值中的最小值 ​​

print ( "符合函數的值是:" , end = "")

print ( 列表 (itertools.starmap( min , li1)))

輸出:

 切片後的列表值為: [4, 7, 10] 的值acc。 to function 是: [1, 1, 4, 1] 

3. takewhile (func, iterable) : —這個迭代器與drop while()相反,它打印值直到函數第一次返回false

4. tee (iterator, count) : —此迭代器 將容器拆分為參數中提到的多個迭代器

<表格邊框 = "0 "cellpadding = "0 "cellspacing = 0 ">

# Python 代碼來演示它是如何工作的
# takewhile () 和 tee ()


#import " itertools & quot;用於迭代器操作

import itertools


# 初始化列表

li = [ 2 , 4 , 6 , 7 , 8 , 10 , 20 ]


# 將列表保存在迭代器中

it = iter (li)


# 使用takewhile() 打印值,直到條件為假。

print ( " 列表值​​​​直到第一個錯誤值是:“ , end = " ")

print ( list (itertools.takewhile ( lambda x: x % 2 = = 0 , li)))


# 使用 tee ( ) 列出迭代器
# 列出 3 個具有相同值的迭代器。

it = itertools.tee (iti , 3 )


# 打印迭代器值​​

print ( "迭代器是:" )

for i in range ( 0 , 3 ): < /p>

print ( list (it [i]))

輸出:

直到第一個假值的列表值是:[2, 4, 6] 迭代器是:[2, 4, 6, 7, 8, 10, 20] [2, 4, 6, 7, 8, 10, 20] [2, 4, 6, 7 , 8, 10, 20]

5. zip_longest (iterable1, iterable2, fillval.) : &# 8212;此迭代器一次打印一個迭代器的 。如果其中一次迭代打印完全,剩餘的值用分配給fillvalue的值填充

# Python 代碼來演示它是如何工作的
# zip_longest ()


#import" itertools & quot;用於迭代器操作

import itertools


# 使用 zip_longest() 將兩個迭代結合起來。

print ( "組合值​​​​可迭代對像是:" )

print ( * (itertools.zip_longest ( ’GesoGes’ , ’ekfrek’ , fillvalue = ’_’ )))

輸出:

 iterables的組合值為:(’G’,’e’) (’e ’,’k’) (’s’,’f’) (’o’,’r’) (’G’, ’e’) (’e’, ’k’) (’s’, ’_’ ) 

組合迭代器

1. product (iter1, iter2) : —此迭代器打印作為參數傳遞的兩個可迭代容器的 笛卡爾積

2.排列 (iter, group_size) : —此迭代器打印可迭代的所有元素的所有 可能排列 每個 排列組的大小 group_size 參數確定

# Python- 演示代碼
# product () and permutation ()


# import & quot; itertools & quot;用於迭代器操作

import itertools


# 使用 product() 打印笛卡爾積

print ( "容器的笛卡爾積是:" )

print ( list (itertools.product ( ’AB’ , ’ 12’ )))


# 使用排列來計算所有可能的排列

print ( "給定容器的所有排列是:" <代碼類 = "plain">)

print ( list (itertools.permutations ( ’GfG’ , 2 )))

輸出:

 容器的笛卡爾積是:[(’A’, ’1’), (’A ’, ’2’), (’B’, ’1’), (’B’, ’2’)] 給定容器的所有排列是:[(’G’, ’f’), (’G ’, ’G’), (’f’, ’G’), (’f’, ’G’), (’G’, ’G’), (’G’, ’f’)] 

3. 組合(iterable, group_size): —此迭代器以 排序順序打印 指定組大小 中傳入參數的容器的 所有可能組合(無替換)

4.combinations_with_replacement(iterable, group_size) : —此迭代器以 排序順序以 指定的組大小 打印容器的 所有可能的組合(帶替換)

<表格邊框 = "0" cellpadding = "0" cellspacing = "0">

# Python 代碼來演示它是如何工作的
#combination() 和combination_with_replacement()


#import & quot; itertools & quot;用於迭代器操作

import itertools


# 使用combinations() 打印每個組合
#(不替換)

print ( "所有容器按排序順序組合(無替換)為:" )

print ( list (itertools.combinations( ’1234’ , 2 )))


# 使用combination_with_replacement() 打印每個組合
# with replacement

print ( "所有容器的組合按排序順序(有替換) 是:" )

print ( list (itertools.combinations_with_replacement ( ’GfG’ <代碼類 ="plain ">, 2 )))

輸出:

 所有容器按排序順序(不替換)的組合為:[(’ 1’,’2’), (’1’, ’3’), (’1’, ’4’), (’2’, ’3’), (’2’, ’4’), (’ 3’, ’4’)] 所有容器的排序組合(有替換)為:[(’G’, ’G’), (’G’, ’f’), (’G’, ’G ’), (’f’, ’f’), (’f’, ’G’), (’G’, ’G’)] 

無限迭代器

1.計數(開始,步驟):—這個迭代器 在“開始”處開始打印並無限期地打印。如果提到步驟,則跳過數字,否則步驟默認為 1。

示例:

 iterator.count (5,2) prints - 5,7,9,11 .. .無限

2.循環(可迭代):—這個迭代器從傳入的容器中按順序打印所有值。當所有項目都循環完成後,它會重新從頭開始打印

示例:

 iterator.cycle ([1,2,3,4]) 打印 - 1,2,3,4,1,2,3,4,1 。 .. 無限 

3. 重複 (val, num) : —這個迭代器 無限次地重複打印 傳遞的值。如果提到了一個數字,他們會達到那個數字。

# Python 代碼來演示它是如何工作的
# repeat ()


#import & quot; itertools & quot;用於迭代器操作

import itertools


# 使用repeat() 重複打印數字

print ( "重複打印數字:" )

打印 ( list (itertools.repeat ( 25 , 4 )) )

輸出:

 打印重複數字:[25, 25, 25, 25] 

本文由 曼吉特·辛格 。如果你是 Python.Engineering 並且想投稿,你也可以使用 contribute.python.engineering 寫一篇文章或發表一篇文章貢獻@python.engineering。在 Python.Engineering 主頁上查看我的文章並幫助其他極客。

如果您發現任何錯誤或想分享有關上述主題的更多信息,請發表評論。