裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

Julia の小ネタ--039 Julia で,内包表記で組合せ(コンビネーション)を列挙する

2021年10月31日 | ブログラミング

内包表記で組合せ(コンビネーション)を列挙する

Python だと,

 >>> a, b = 5, 2
 >>> [[a, b] for a in range(5) for b in range(a)]
 [[1, 0], [2, 0], [2, 1], [3, 0], [3, 1], [3, 2], [4, 0], [4, 1], [4, 2], [4, 3]]

を得る。

Julia は Python が 0 オリジンなのに対して 1 オリジンなので,以下のようになる。

  [[a, b] for a in 1:5 for b in 1:a-1]
  [[a-1, b-1] for a in 1:5 for b in 1:a-1]
  using Combinatorics
  for i in combinations(1:5, 2)
     println(i)
  end
  [1, 2]
  [1, 3]
  [1, 4]
  [1, 5]
  [2, 3]
  [2, 4]
  [2, 5]
  [3, 4]
  [3, 5]
  [4, 5]

順序を揃えたいなら

  using Combinatorics
  for i in combinations(1:5, 2)
     println([i[2], i[1]])
  end
  [2, 1]
  [3, 1]
  [4, 1]
  [5, 1]
  [3, 2]
  [4, 2]
  [5, 2]
  [4, 3]
  [5, 3]
  [5, 4]

とか

  using Combinatorics
  for i in combinations(1:5, 2)
     println([i[2]-1, i[1]-1])
  end
  [1, 0]
  [2, 0]
  [3, 0]
  [4, 0]
  [2, 1]
  [3, 1]
  [4, 1]
  [3, 2]
  [4, 2]
  [4, 3]
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Julia の小ネタ--038 文字列... | トップ | Julia の小ネタ--040 クリッ... »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事