Summe des Produkts von Kombinationen in einer Liste

7

Was ist der pythonische Weg, um das Produkt aller Kombinationen in einer gegebenen Liste zu summieren, wie zum Beispiel:

%Vor%

(Für dieses Beispiel habe ich alle Kombinationen aus zwei Elementen gewählt, aber es hätte anders sein können.)

    
blackened 23.12.2015, 13:58
quelle

4 Antworten

10

Verwenden Sie itertools.combinations

%Vor%     
Avinash Raj 23.12.2015, 14:02
quelle
7
%Vor%

itertools.combinations(a, 2) gibt Folgendes zurück:

%Vor%

Und itertools.starmap() tut:

  

Erstellen Sie einen Iterator, der die Funktion mithilfe von Argumenten berechnet, die aus dem iterablen Element stammen. Wird anstelle von map() verwendet, wenn die Argumentparameter bereits in Tupeln von einem einzelnen iterablen Objekt gruppiert sind (die Daten wurden "vor gezippt").

Schließlich verwenden Sie sum() mit einem generator Verständnis , um die endgültigen Ergebnisse zu erhalten.

    
Kevin Guan 23.12.2015 14:02
quelle
2

Ich bin mir nicht sicher über den pythonischen Weg, aber Sie könnten dieses Problem in ein einfacheres lösen.

z. Für eine Liste [a, b, c] = & gt; Ergebnis kann auch als

geschrieben werden %Vor%

So kann es als Differenz von Quadrat der Summe der Liste und Summe der Quadrate der Liste, geteilt durch 2, geschrieben werden.

Sie können das Gleiche wie folgt in Python erreichen:

%Vor%

P.S. Ich weiß, dass das Problem mit Hilfe von itertools gelöst werden kann und fragt speziell nach dem pythonischen Weg, um es zu lösen. Ich denke, es wäre sehr einfach, dies zu tun, ohne alle Kombinationen auszuprobieren.

    
manishrw 23.12.2015 14:08
quelle
1

Dies ist auch die Summe des oberen Dreiecks des äußeren Vektorprodukts des Arrays mit sich selbst:

%Vor%

Schritt für Schritt funktioniert es so:

%Vor%     
Steve Misuta 23.12.2015 16:20
quelle