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

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

coldplay.xixi
coldplay.xixi転載
2020-11-12 17:32:171840ブラウズ

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)」と同じです。<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>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 までご連絡ください。