Pythonで指定された合計を持つリスト内のすべてのトリプレットを検索します
数字のリストで、特定の合計を与えるためにどの3つの要素を結合できるかを調べたいと思います。これをトリプレットと呼びます。そして、リストにはそのようなトリプレットがたくさんある可能性があります。たとえば、合計10は、1、6、3および1、5、4のフォーム番号で生成できます。この記事では、与えられた数のリストからそのようなすべてのトリプレットを見つける方法を見ていきます。
範囲変数と一時変数の使用
これは、一時変数を作成する従来のアプローチです。これらの変数はリストの要素を保持し、それらの合計が必要な値に等しいかどうかを確認します。その後、そのような変数を最終結果セットに蓄積し続けます。
例
def SumTriplets(listA, sum): trpltcnt = 0 res = [] for i in range(0, len(listA) - 1): s = set() tmp = [] # Adding first element tmp.append(listA[i]) current_sum = sum - listA[i] for j in range(i + 1, len(listA)): if (current_sum - listA[j]) in s: trpltcnt += 1 # Adding second element tmp.append(listA[j]) # Adding third element tmp.append(current_sum - listA[j]) # Appending tuple to the final list res.append(tuple(tmp)) tmp.pop(2) tmp.pop(1) s.add(listA[j]) return res listA = [11,12,13,14,15,16,17,18,19,20] print("Required triplets:\n",SumTriplets(listA, 40))
出力
上記のコードを実行すると、次の結果が得られます-
Required triplets: [(11, 15, 14), (11, 16, 13), (11, 17, 12), (12, 15, 13)]
例
from itertools import combinations listA = [11,12,13,14,15,16,17,18,19,20] def fsum(val): return sum(val) == 40 res = list(filter(fsum,list(combinations(listA, 3)))) print("Required triplets:\n",res)
出力
上記のコードを実行すると、次の結果が得られます-
Required triplets: [(11, 12, 17), (11, 13, 16), (11, 14, 15), (12, 13, 15)]
-
リストの累積合計を見つけるPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、累積合計でリストを作成する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # cumulative sum def Cumulative(l): new = [] cumsum = 0 for element in l: cumsum += element new.append(cumsum) &
-
リスト内のすべてのペア間の絶対差の合計を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 リスト入力が与えられた場合、リスト内のすべてのペア間の絶対差の合計を見つける必要があります。 列挙() メソッドは、反復可能オブジェクトにカウンターを追加し、それを列挙オブジェクトタイプの形式で返します。 この方法では、絶対差を含むリスト「diffs」があります。 2つの変数が初期化された2つのループを使用します。 1つはカウンターを反復処理し、もう1つはリスト要素を反復処理します。すべての反復で、要素が類似しているかどうかを確認します。 そうでない場合は、絶対差を見つけて、それ