Python には強力な反復ツール パッケージ itertools があり、これは Python に付属する標準ツール パッケージの 1 つです。
itertools は組み込みライブラリであるため、インストールは必要ありません。import itertools
だけです。
product は、複数の反復可能なオブジェクトのデカルト積を見つけるために使用されます (Cartesian Product)
これは、ネストされた for ループと同等です。数学における 2 つの集合 X と Y のデカルト積 (デカルト積) を指し、直積とも呼ばれ、
で表されます。
は、「((x,y) for x in A for y in B)」と同じです。<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">import itertools
for item in itertools.product([1,2,3],[100,200]):
print(item)
# 输出如下
(1, 100)
(1, 200)
(2, 100)
(2, 200)
(3, 100)
(3, 200)复制代码</pre><div class="contentsignin">ログイン後にコピー</div></div>
permutations
完全な順列、つまり、指定された数の要素 (順序に応じて) を生成するすべての順列。これは、高校の順列の組み合わせの
A です。 permutationsコレクション オブジェクトを受け取り、一連のタプルを生成します。
例:
print(list(itertools.permutations('abc',3)))、合計
items = ['a','b','c']
from itertools import permutations
for i in permutations(items,2):
print(i) #排列组合
# 输出如下
('a', 'b')
('a', 'c')
('b', 'a')
('b', 'c')
('c', 'a')
('c', 'b')复制代码
itertools.permutations(iter,r)
permutations
は再利用が可能ですが、後者のcombinations は再利用できません
>>> print(list(itertools.combinations('abc',3))) [('a', 'b', 'c')]复制代码
combinations_with_replacement
combinations_with_replacement は
combinations とよく似ていますが、唯一の違いは、前者の
>>> print(list(itertools.combinations_with_replacement('abc',3))) [('a', 'a', 'a'), ('a', 'a', 'b'), ('a', 'a', 'c'), ('a', 'b', 'b'), ('a', 'b', 'c'), ('a', 'c', 'c'), ('b', 'b', 'b'), ('b', 'b', 'c'), ('b', 'c', 'c'), ('c', 'c', 'c')]复制代码
accumulate
accumulateは、リスト内の要素を1つずつ累積するために使用されます
>>> import itertools >>> x = itertools.accumulate(range(10)) >>> print(list(x)) [0, 1, 3, 6, 10, 15, 21, 28, 36, 45]复制代码
compress()Yes フィルター ツール。反復可能オブジェクトとブール選択シーケンスを入力として受け取り、ブール シーケンスで True であるすべての反復可能オブジェクトを出力します。
import itertools its=["a","b","c","d","e","f","g","h"] selector=[True,False,1,0,3,False,-2,"y"] for item in itertools.compress(its,selector): print (item) a c e g h 复制代码
count(initial value=0, step=1) は、渡された開始パラメータの数値から開始して等間隔でイテレータを作成します。
from itertools import count for i in count(10): #从10开始无限循环 if i > 20: break else: print(i) 10 11 12 13 14 15 16 17 18 19 20复制代码
chain チェーンは主に、反復のために複数のシーケンスを接続するために使用されます。
import itertools chain = itertools.chain([1, 2, 3], [4, 5, 6]) for c in chain: print(c) 1 2 3 4 5 6 复制代码
>>> list(itertools.chain([1, 2, 3], [4, 5], [6] ,[7,8])) [1, 2, 3, 4, 5, 6, 7, 8]复制代码
import itertools cycle = itertools.cycle([1, 2, 3]) for c in cycle: print(c)复制代码
Python ビデオ チュートリアル
以上がPython の itertools モジュールについての深い理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。