itertools.combinations(a, 2)
gibt Folgendes zurück:
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.
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.
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%Tags und Links python functional-programming python-3.x