Die Sortierung nach absoluten Wert ohne änderung zu absoluten Wert
Möchte ich Sortieren eines Tupels mit Hilfe der abs (), ohne tatsächlich ändert die Elemente der Tupel zu positiven Werten.
def sorting(numbers_array):
return sorted(numbers_array, key = abs(numbers_array))
sorting((-20, -5, 10, 15))
Gemäß der python-wiki (https://wiki.python.org/moin/HowTo/Sorting/#Key_Functions), die sortiert(Liste, key=) - Funktion wird angenommen, sortiert mit dem parameter Schlüssel, ohne tatsächlich eine änderung der Elemente der Liste. Allerdings, abs() nimmt nur int ( ... ) und ich habe noch nicht herausgefunden, einen Weg, um das Tupel in ein int, wenn es das ist, was ich tun muss.
- Warten Sie, Sie versuchen, Sie zu Sortieren ein Tupel, keine Liste hier. Ist das so gewollt?
sorted((-20, -5, 10, 15), key=lambda v: -v if v<0 else v)
ist eine Alternative, um die richtigensorted((-20, -5, 10, 15), key=abs)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie
key
eine callable, eine Funktion oder ähnliches zu nennen; es werden genannt die für jedes element in der Sequenz sortiert.abs
werden kann, die aufrufbar:Du statt übergeben Ergebnis der
abs()
nennen, die in der Tat nicht die Arbeit mit einer ganzen Liste.Demo:
sorting()
ist nicht die gleiche Funktion wiesorted()
. Deine Fehlermeldung sagt Ihnen, Sie sind dem Aufruf der falschen Funktion gibt..Also, wenn Sie wollen, Sortieren Sie diese 4 Werte (-20, -5, 10, 15) die gewünschte Ausgabe wäre:
[-5, 10, 15, -20], denn Sie sind unter den absoluten Wert.
So, hier ist die Lösung: