Nur Teil einer Liste an Funktion übergeben
Verfasst: Dienstag 30. April 2019, 09:02
Hallo Profis,
eine wohl einfache Frage, aber ich stehe wohl auf dem Schlauch - Ich habe eine Liste mit jeweils 4 Elementen in der Art
die sortiert werden soll und zwar mit der rgb_to_hsv Funktion von colorsys, in der Art
was wunderbar funktioniert, wenn die Liste nur 3 Argumente hat, aber wie übergebe ich eine Liste an eine fertige Funktion mit einer definierten Parameterzahl, ohne den 4. Parameter der Liste zu löschen, denn eine direkte Übergabe bringt natürlich den Fehler
Wenn ich versuche, den letzten Parameter zu entfernen
bringt er zwar keine Fehler, aber erstellt - meines Wissens ja - nur eine Kopie der Liste und sortiert die Originalliste nicht.
Zusammenfassend: Wie übergebe ich eine Liste mit x Parametern an eine fixe Funktion, die eine definierte Anzahl von Parametern hat, und erhalte als Rückgabewert wieder die sortierte Originalliste mit allen Werten - geht das überhaupt, oder muss ich die Originalfunktion kopieren und entsprechend ändern?
1000 Dank für jeden Tipp
Bob
eine wohl einfache Frage, aber ich stehe wohl auf dem Schlauch - Ich habe eine Liste mit jeweils 4 Elementen in der Art
Code: Alles auswählen
colors = []
colors.append((150, 133, 50, 'Farbe1'))
colors.append((200, 140, 70, 'Farbe2'))
colors.append((200, 160, 60, 'Farbe3'))
Code: Alles auswählen
colors.sort(key=lambda rgb: colorsys.rgb_to_hsv(*rgb))
Code: Alles auswählen
"rgb_to_hsv() takes 3 positional arguments but 4 were given"
Code: Alles auswählen
[zeile[:3] for zeile in colors].sort(key=lambda rgb: colorsys.rgb_to_hsv(*rgb))
Zusammenfassend: Wie übergebe ich eine Liste mit x Parametern an eine fixe Funktion, die eine definierte Anzahl von Parametern hat, und erhalte als Rückgabewert wieder die sortierte Originalliste mit allen Werten - geht das überhaupt, oder muss ich die Originalfunktion kopieren und entsprechend ändern?
1000 Dank für jeden Tipp
Bob