python:itertools

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

python:itertools [2017/12/08 16:24] – 作成 mumeiyamibitopython:itertools [2017/12/08 16:43] (現在) mumeiyamibito
行 1: 行 1:
 ====== Python モジュール: itertools ====== ====== Python モジュール: itertools ======
 ===== 概要 ===== ===== 概要 =====
-  * 順列や組み合わせ、直積を簡単に扱えるモジュール+  * 階乗、順列や組み合わせ、直積を簡単に扱えるモジュール
  
 ===== 使い方 ===== ===== 使い方 =====
行 11: 行 11:
 VAR = list(itertools.permutations(SEQ)) VAR = list(itertools.permutations(SEQ))
 </code> </code>
-    * ''VAR'': 階乗の組み合わせを格納する変数 +    * ''VAR'': 階乗のパターンを格納する変数 
-    * ''SEQ'': 階乗で使われる数のリスト (リストの長さが階乗 N! の N になる)+    * ''SEQ'': 階乗で使われる数のリスト (リストの長さが階乗 $N!の $Nになる)
     * パターン数を求める場合は、''list'' の長さを調べると良い。     * パターン数を求める場合は、''list'' の長さを調べると良い。
       * 例: 5! のパターン数\\ <code python>       * 例: 5! のパターン数\\ <code python>
行 24: 行 24:
 ==== 順列 ==== ==== 順列 ====
   * 順列のイテレータ (list でリストに変換できる) を作成する\\ <code python>   * 順列のイテレータ (list でリストに変換できる) を作成する\\ <code python>
-VAR = itertools.permutations(SEQ, R)+VAR = list(itertools.permutations(SEQ, R)
 +</code> 
 +    * ''VAR'': 順列のパターンを格納する変数 
 +    * ''SEQ'': リストの長さが ${}_n \mathrm{P}_r$ の ${}_n$ になる。 
 +    * ''R'': ${}_n \mathrm{P}_r$ の ${}_r$ 
 +    * 例: ${}_5 \mathrm{P}_3$\\ <code python> 
 +variable = len(list(itertools.permutations(range(5), 3)))    # 60
 </code> </code>
-    * ''VAR'': 階乗の組み合わせを格納する変数 
-    * ''SEQ'': 階乗で使われる数のリスト (リストの長さが階乗  の N になる) 
  
 ==== 組み合わせ ==== ==== 組み合わせ ====
 +  * 組み合わせ (順列の順序なし) のイテレータ (list でリストに変換できる) を作成する\\ <code python>
 +VAR = list(itertools.combinations(SEQ, R))
 +</code>
 +    * ''VAR'': 組み合わせのパターンを格納する変数
 +    * ''SEQ'': リストの長さが ${}_n \mathrm{C}_r$ の ${}_n$ になる。
 +    * ''R'': ${}_n \mathrm{C}_r$ の ${}_r$
 +    * 例: ${}_5 \mathrm{C}_3$\\ <code python>
 +variable = len(list(itertools.combinations(range(5), 3)))    # 10
 +</code>
  
 +==== 直積 ==== 
 +  * 2 つの集合体の組み合わせである直積 ($A \times B$) のイテレーターを作成する\\ <code python> 
 +VAR = list(itertools.product(SEQ_A, SEQ_B)) 
 +</code> 
 +    * ''VAR'': 直積のパターンを格納する変数 
 +    * ''SEQ_A'': 集合 A 
 +    * ''SEQ_A'': 集合 B 
 +    * 返り値は、組み合わせパターンの 2 変数 
 +    * 例:\\ <code python> 
 +list_a = [1,2,3] 
 +list_b = [4,5] 
 +variable = len(list(itertools.product(list_a, list_b))) 
 +# [(1, 4), (1, 5), (2, 4), (2, 5), (3, 4), (3, 5)] 
 +for i,j in itertools.product(list_a, list_b): 
 +    print(i, j) 
 +# 1 4 
 +# 1 5 
 +# 2 4 
 +# 2 5 
 +# 3 4 
 +# 3 5 
 +</code>
  
 ===== 参考サイト ===== ===== 参考サイト =====
  • python/itertools.1512717896.txt.gz
  • 最終更新: 2017/12/08 16:24
  • by mumeiyamibito