[解決済み] カスタム比較関数でリストをソートする
2022-09-13 14:53:47
質問
このような名前の質問がいくつかあることは知っていますが、私の場合はうまくいかないようです。
私はリストのリストを持っています、50回5つの要素。私は各要素にカスタム比較関数を適用することによって、このリストを並べ替えたいと思います。この関数は、要素がソートされるリストの適合度を計算します。私は2つの関数、compareとfitnessを作成しました。
def compare(item1, item2):
return (fitness(item1) < fitness(item2))
と
def fitness(item):
return item[0]+item[1]+item[2]+item[3]+item[4]
で呼んでみたところ
sorted(mylist, cmp=compare)
または
sorted(mylist, key=fitness)
または
sorted(mylist, cmp=compare, key=fitness)
または
sorted(mylist, cmp=lambda x,y: compare(x,y))
また、同じパラメータでlist.sort()も試してみました。しかし、いずれにせよ、この関数はリストを引数として受け取るのではなく
None
. 私はそれがなぜなのか全くわかりません、ほとんどC++から来て、これは私にとってコールバック関数のすべてのアイデアと矛盾しています。どのように私はカスタム関数でこのリストを並べ替えることができますか?
編集 間違いを発見しました。元のリストを作成する連鎖の中で、1つの関数は何も返しませんでしたが、戻り値は使用されました。ご迷惑をおかけして申し訳ありません。
どのように解決するのですか?
>>> l = [list(range(i, i+4)) for i in range(10,1,-1)]
>>> l
[[10, 11, 12, 13], [9, 10, 11, 12], [8, 9, 10, 11], [7, 8, 9, 10], [6, 7, 8, 9], [5, 6, 7, 8], [4, 5, 6, 7], [3, 4, 5, 6], [2, 3, 4, 5]]
>>> sorted(l, key=sum)
[[2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6, 7], [5, 6, 7, 8], [6, 7, 8, 9], [7, 8, 9, 10], [8, 9, 10, 11], [9, 10, 11, 12], [10, 11, 12, 13]]
上記は動作します。何か違うことをしているのでしょうか?
あなたのキー関数が単に
sum
であることに注意してください。
関連
-
[解決済み] 2つのリスト(お互いを参照している)を全く同じ方法でソートする方法
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] 辞書のリストを辞書の値でソートするにはどうしたらいいですか?
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] カスタムオブジェクトのArrayListをプロパティでソートする
-
[解決済み] オブジェクトの属性に基づいてオブジェクトのリストを並べ替えるには?
-
[解決済み] リストの変更が不意にサブリスト全体に反映されたリスト
-
[解決済み] リスト/タプルを指定されたインデックスにある要素でソートするには?
-
[解決済み] Pythonのargparseを使った隠し引数の作成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] DataFrameの文字列、dtypeがobjectの場合
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] Pandasの'Freq'タグにはどのような値が有効ですか?
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?
-
[解決済み] Alembicアップグレードスクリプトでインサートやアップデートを実行するにはどうすればよいですか?