1

私はPythonでクリーチャーシミュレーターを作成しています。最初に行うことは、食べ物を検索することです。当然、距離で検索することもありますが、食料源の質で並べ替えたいと思います。これを行う良い方法はありますか?考えられるすべてのソースのリストを取得してからリストを並べ替えると、Pythonに並べ替え関数が組み込まれていることはわかっていますが、そのラムダ部分はよくわかりません。

4

1 に答える 1

2

ラムダ(ラムダを使用する必要はありません。名前付き関数を使用できます)は、効用計算をプラグインする場所です。最初に距離と品質に基づいて食品ソースにスコアを割り当てる関数を作成し、次にそれをソート関数の「キー」として渡して、それに基づいてリストをソートします。重要なことは、効用計算を並べ替え可能な出力(数値スコアなど)を生成する関数として表現できることです。それができない場合は、並べ替える要素がありません。

例として、簡単な効用関数は、品質から距離を引いたものに基づいてスコアを付けることです。

sources.sort(key=lambda source: source.quality - source.distance, reverse=true)

reverse=trueこの関数は、より良いオプションにより高いスコアを割り当てるためです。ユーティリティメソッド(「距離から品質を引いたもの」)を自由に反転して、省略できます。 source.distanceもちろん、現在の場所からの相対距離を計算するには、ある種の関数に置き換える必要があります。

于 2013-02-25T22:59:42.243 に答える