2016-10-26 3 views
0

私はリストが与えられており、そのリスト内のすべての可能なトリプルの数を与えたいと思います。ここで(i < j < k)と私はjとjに分けてk、指定されたリストの長さが2から2000の間で、リスト内の要素が1から999999までの間である場合に機能するはずです。リスト内のトリプルの数を見つける

input: L = [1,1,1] 
# code should find: Only one tuple found 
output: 1 

例ケース2:何のタプルがリターン0

例ケース1見つからない場合

input: L = [1,2,3,4,5,6] 
# code should find: triples are (1,2,4) , (1,2,6), and (1,3,6) 
output: 3 
+0

これまでのところ、私は多分、それぞれが各インデックスは頂点 –

+0

AFAICTあるエッジを持つ3つのリストでグラフを作成しようとしている必要があります* i

答えて

1

は、次のようなリスト内包でそれを行うことができます。

>>> [(i, j, k) for i in L for j in L for k in L if k > j > i and j % i == 0 and k % j == 0] 
[(1, 2, 4), (1, 2, 6), (1, 3, 6)] 

編集

これは長いバージョンである:第1の出力

tups = [] 
for i in L: 
    for j in L: 
     for k in L: 
      if k > j > i and j % i == 0 and k % j == 0: 
       tups.append((i, j, k)) 
+0

これをより包括的なコードブロックに分解する方法はありますか? inconvinienceについて申し訳ありません –

+0

@SergioChecoNuñez更新を参照してください - これはあなたの意味ですか? –

+0

はい!ありがとうございました。今私はこれが大部分のケースでうまくいくことに気付きますが、すべてが1の場合は1を返しますが、コードは空のリストを返します。 –

関連する問題