Absolute sorting
ある並び替えにチャレンジしてみましょう。ここには特定のルールに従った配列があります。
その配列 (タプル) は様々な数字を持っています。 あなたはそれを並び替かえなければいけません。ただし絶対値で且つ昇順で並べ替えてください. 例えば、(-20, -5, 10, 15)の配列は、次のように並び替えされます: (-5, 10, 15, 20) あなたの関数は、並び替え済みの配列、もしくはタプルを返さなければいけません。
条件: 配列内の数値は(絶対値が)ユニークである。
入力: 数値の配列、もしくはタプル。
出力: 絶対値で昇順に並び替えられた配列かタプル(ジェネレーターではなく)。
追記: あなたの関数の結果は、テストの説明パネルでリストとして表示されます。
例:
checkio*1 == [-5, 10, 15, -20] # or (-5, 10, 15, -20)
checkio*2 == [0, 1, 2, 3]
checkio*3 == [0, -1, -2, -3]
どのように使われるか: 「並び替え」は多くのタスクの一部としてよく現れるので、どのように使うかを知っていると役に立ちます。
条件: len(set(abs(x) for x in array)) == len(array)
0 < len(array) < 100
all(isinstance(x, int) for x in array)
all(-100 < x < 100 for x in array)
def checkio(numbers_array): return sorted(numbers_array,key=lambda x: abs(x)) #These "asserts" using only for self-checking and not necessary for auto-testing if __name__ == '__main__': def check_it(array): if not isinstance(array, (list, tuple)): raise TypeError("The result should be a list or tuple.") return list(array) assert check_it(checkio((-20, -5, 10, 15))) == [-5, 10, 15, -20], "Example" # or (-5, 10, 15, -20) assert check_it(checkio((1, 2, 3, 0))) == [0, 1, 2, 3], "Positive numbers" assert check_it(checkio((-1, -2, -3, 0))) == [0, -1, -2, -3], "Negative numbers"
pythonでソートするにはsortedを使う。sortedには、どんなルールでsortするかを指定することができる。
sorted(iterable[, key][, reverse]) iterable の要素を並べ替えた新たなリストを返します。 二つのオプション引数があり、これらはキーワード引数として指定されなければなりません。 key は 1 つの引数からなる関数を指定します。これはリストの各要素から比較のキーを取り出すのに使われます: key=str.lower。デフォルト値は None です (要素を直接比較します)。 reverse はブール値です。True に設定された場合、リストの要素は各比較が反転したように並び替えられます。
lambdaで局所関数を定義して、それを渡しているだけ。
Clear 1位
def checkio(numbers_array): """ The magic of the key :) """ return tuple(sorted(numbers_array, key=abs))