この質問では問われていませんが組み合わせを表す(0,4)
などのタプル自体も使う予定があるのであれば、 itertools の combinations を使うとよいかと思います。
python3
1from itertools import combinations
2
3values = [2, 0, 0, 0, 1, 0, 0, 0, 3]
4non_zero_indexes = [i for i, v in enumerate(values) if v != 0] # => [0, 4, 8]
5
6count_of_pairs = len([*combinations(non_zero_indexes, 2)])
7
8print(count_of_pairs)
実行結果:
3
単に組み合わせの数を求めるのであれば、itertools.combinationsを使わなくても、n
個のうち r
個をとる組み合わせの数が、
nCr = n(n-1)(n-2) ・・・ (n-r+1) ÷ r!
であることを使えば、特に r = 2 のときは、r! = 2! = 2 となり、
nC2 = n(n-1) ÷ 2
という簡単な式で求められるので、以下で算出できます。
python3
1values = [2, 0, 0, 0, 1, 0, 0, 0, 3]
2non_zero_indexes = [i for i, v in enumerate(values) if v != 0] # => [0, 4, 8]
3
4n = len(non_zero_indexes)
5count_of_pairs = int(n * (n-1) / 2)
6
7print(count_of_pairs)
8
実行結果:
3
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/16 04:16
退会済みユーザー
2021/11/16 04:27
2021/11/16 04:56
退会済みユーザー
2021/11/16 05:13
2021/11/16 07:33
退会済みユーザー
2021/11/16 07:59
2021/11/16 08:36
退会済みユーザー
2021/11/16 09:03
2021/11/16 09:18
2021/11/17 01:04
退会済みユーザー
2021/11/17 02:21 編集
2021/11/17 02:36
退会済みユーザー
2021/11/17 02:39