出力
リストを半角スペース区切りで一行で出力
1 2 3 |
list = [1,2,3,4,5] print(*list) #1 2 3 4 5 |
リストを指定した区切り文字で出力(半角、カンマ)
1 2 3 4 5 |
list = [1,2,3,4,5] for i in range(len(list)): print(list[i], end=',') #1,2,3,4,5, |
この場合最後もカンマがついてしまうのでif文使うなどで調整が必要ですね。
内包表記
後日記載
順列・組み合わせ
順列の生成:itertools
1 2 |
import itertools itertools.permutations(iterable,r) |
iterableから長さrの順列を返す。(iterableの中から、rの数だけ使用して順列を全て列挙する。)
場合の数におけるnPrの計算。7P3=7*6*5=210となるが、その210通りの組み合わせを全て列挙する。
rを指定しないときはデフォルトでiterableの長さとなり、階乗の計算になる。
7P7=7!→計算量はN!となるので競技プログラミングなどではN<10,N<8以下など制約が小さい場合に利用する場面がある。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import itertools list_A=[1,2,3] #■長さが1の順列を生成する。(0から始まる。1から始める方法は後述) list(itertools.permutations(range(1))) #[(0,)] list(itertools.permutations(range(2))) #[(0,1),(1,0)] list(itertools.permutations(range(3))) #[(0,1,2),(0,2,1),(1,0,2),(1,2,0),(2,0,1),(2,1,0)] #■iterable(今回はリスト)から1つ/2つを選んで順列を生成 list(itertools.permutations(list_A,1)) #[(1,),(2,),(3,)] list(itertools.permutations(list_A,2)) #[(1,2),(1,3),(2,1),(2,3),(3,1),(3,2)] #■1から3までの順列を生成。(range(1,4)では1から3までが範囲になる) list(itertools.permutations(range(1,4))) #[(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1)] |
itertools — 効率的なループ実行のためのイテレータ生成関数 — Python 3.9.4 ドキュメント
組み合わせ
組み合わせの数だけ繰り返す
1 2 3 4 |
from itertools import combinations list= [1,2,3,4,5] for i,j in combinations(list,2): print(i,j) |
list内の5つの要素から2つを選ぶ組み合わせの数だけ処理を繰り返すことができる。
選んだ組み合わせのそれぞれに対してはfor節の中で処理を指定できる。
コメント