Python Codes zu kombinieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
tristanfermat
User
Beiträge: 1
Registriert: Donnerstag 1. Oktober 2020, 13:41

Hallo,
Ich möchte diese beiden Codes kombinieren. Aber ich konnte nicht. In der ersten sollte es Listen erstellen und in der zweiten sollte es zeigen, welche Liste den Maximalwert hat. Können Sie diese beiden in einem Code schreiben? Danke.

Code: Alles auswählen

import itertools
stuff = [30,30,40,40,45,50,60,80,90,100]
for L in range(0, len(stuff)+1):
    
   for subset in itertools.combinations(stuff, L):
        print(subset)
        

Code: Alles auswählen

import functools

test_matrix = ([1,2,3,4,5], [3,6,9], [12,10,1])
res = functools.reduce(lambda i, j: i if 200 < sum(j) 
       else j, test_matrix)
                

print ("Maximum sum sublist is : " + str(res)) 

# printing the original matrix 
print ("The original matrix is : " + str(test_matrix)) 
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

Du mußt im ersten Teil einfach eine Liste erzeugen, statt die Listen mit print auszugeben. Die kannst Du dann im zweiten Teil statt test_matrix benutzt.
Der Reduce-Ausdruck sieht äußerst kompliziert aus. Sowas läßt sich meist lesbarer durch eine for-Schleife ersetzen:

Code: Alles auswählen

test_matrix = ([1,2,3,4,5], [3,6,9], [12,10,1])
for res in reversed(test_matrix):
    if sum(res) <= 200:
        break
Der Text in der Ausgabe passt dann nicht ganz zum Code. Also entweder ist der Code falsch, oder die Beschreibung.
Antworten