0

次のように、特定の並べ替え関数を Python 独自の組み込みの sorted() 関数に渡す方法を本で見ました。

def mysort(a, b):
    if a[3] < b[3]:
        return -1
    elif a[3] > b[3]:
        return 1
    else:
        return 0

data = [
('Alpha Centauri A', 4.3, 0.26, 1.56),
('Alpha Centauri B', 4.3, 0.077, 0.45),
('Alpha Centauri C', 4.2, 0.00001, 0.00006),
("Barnard's Star", 6.0, 0.00004, 0.0005),
('Wolf 359', 7.7, 0.000001, 0.00002),
('BD +36 degrees 2147', 8.2, 0.0003, 0.006),
('Luyten 726-8 A', 8.4, 0.000003, 0.00006),
('Luyten 726-8 B', 8.4, 0.000002, 0.00004),
('Sirius A', 8.6, 1.00, 23.6),
('Sirius B', 8.6, 0.001, 0.003),
('Ross 154', 9.4, 0.00002, 0.0005),
]

sorted_data = sorted(data, mysort)

上記のコードは、4 要素タプルの 4 番目の要素に基づいてデータを並べ替えます。aここでは、 sorted() 関数が引数とb引数を関数に与える方法を理解しようとしていmysortます。私の意図は、次のmysortような関数に別の引数を渡すことです。

def mysort(a, b, i):
    if a[i] < b[i]:
        return -1
    elif a[i] > b[i]:
        return 1
    else:
        return 0

ソートの基準となる要素を関数に伝えます。私は混乱しています。

sorted_data = sorted(data, mysort)

関数に引数を渡しませんmysortsorted()関数は独自の魔法を実行しているようで、関数に引数ab引数を提供しmysortます。mysort要約すると、さまざまな並べ替えタイプの関数に3 番目の引数を追加する方法があるのだろうか?

ありがとうございました!

4

2 に答える 2