ホームページ > バックエンド開発 > Python チュートリアル > Python の itertools モジュールについての深い理解

Python の itertools モジュールについての深い理解

coldplay.xixi
リリース: 2020-11-12 17:32:17
転載
1847 人が閲覧しました

Python ビデオ チュートリアル 列では itertools モジュールを紹介します。

Python の itertools モジュールについての深い理解

Python には強力な反復ツール パッケージ itertools があり、これは Python に付属する標準ツール パッケージの 1 つです。

product

itertools は組み込みライブラリであるため、インストールは必要ありません。import itertools だけです。

product は、複数の反復可能なオブジェクトのデカルト積を見つけるために使用されます (Cartesian Product) これは、ネストされた for ループと同等です。数学における 2 つの集合 X と Y のデカルト積 (デカルト積) を指し、直積とも呼ばれ、

XX × Y

で表されます。

product(A, B)

は、「((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)))

、合計 A33=6A_3 ^3=6

items = ['a','b','c']
from itertools import permutations
for i in permutations(items):
    print(i) #排列组合

print(list(itertools.permutations('abc',3))) 
# 输出如下
('a', 'b', 'c')
('a', 'c', 'b')
('b', 'a', 'c')
('b', 'c', 'a')
('c', 'a', 'b')
('c', 'b', 'a')
[('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]复制代码
ログイン後にコピー
指定された長さのすべての順列が必要な場合は、オプションの長さパラメーター r を渡すことができます。
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')复制代码
ログイン後にコピー
combinations

リストまたはジェネレーター内の指定された数の要素が繰り返されないすべての組み合わせを検索します

itertools.permutations(iter,r)

itertools.combinations(iter,r)

の違いは、前者の

permutations

は再利用が可能ですが、後者の

combinations は再利用できません

>>> print(list(itertools.combinations('abc',3)))
[('a', 'b', 'c')]复制代码
ログイン後にコピー
combinations_with_replacementcombinations_with_replacementcombinations とよく似ていますが、唯一の違いは、前者の

combinations_with_replacement

コレクション型のデータであることです。繰り返し可能です

>>> 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')]复制代码
ログイン後にコピー
accumulateaccumulateは、リスト内の要素を1つずつ累積するために使用されます
>>> import itertools
>>> x = itertools.accumulate(range(10))
>>> print(list(x))
[0, 1, 3, 6, 10, 15, 21, 28, 36, 45]复制代码
ログイン後にコピー
compress

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

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

chain チェーンは主に、反復のために複数のシーケンスを接続するために使用されます。

import itertools
chain = itertools.chain([1, 2, 3], [4, 5, 6])
for c in chain:
   print(c)
1
2
3
4
5
6  
复制代码
ログイン後にコピー
チェーンのもう 1 つの非常に重要な機能は、リストを平坦化することです。

>>> list(itertools.chain([1, 2, 3], [4, 5], [6] ,[7,8]))
[1, 2, 3, 4, 5, 6, 7, 8]复制代码
ログイン後にコピー
cycle

import itertools
cycle = itertools.cycle([1, 2, 3])
for c in cycle:
   print(c)复制代码
ログイン後にコピー

出力される演算結果は 1 2 3 1 2 3... ぐるぐる回り続けて止まりません。

関連する無料学習の推奨事項:

Python ビデオ チュートリアル

以上がPython の itertools モジュールについての深い理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.im
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート