min()
、max()
は、リストのソートとスライスを数値で使用したいと考えています。 sorted()
機能で は、エレガントな解決策があります。リストでの.sort()メソッドとスライスを使った単一式
maximum = lambda arr: sorted(arr)[-1]
または
def maximum(arr):
return sorted(arr)[-1]
しかし、私はより多くのメモリ効率的
.sort()
方法でエレガントなソリューションを実現したい場合、私はボトルネックにいますよ。
.sort()
は、新しいリストを作成せずに、並べ替え、ひいてはなしを返していない、ので、私は唯一のワンライナーは、次のとおりです。
def maximum(arr):
return arr[-1] if arr.sort() == None else "Huston, we found a bug!"
これは非常にニシキヘビではありません。 .sort()
とスライスを使用して、単一かつエレガントな表現のための方法はありますか?
これはちょうど「楽しみ」ですが、リストをソートするのはO(n * log(n))ですが、minやmaxを見つける典型的なアルゴリズムはO(n)です。また、 '.sort'を使用すると' '最大値 ''が破壊的な操作になります。これは大きな欠点のようです。最後に、「Pythonic」の方法はしばしば1ライナーを避けることです。 :-) – smarx
pythonicの方法は、組み込みのmin関数とmax関数を使うことです。あなたはそれをやってくれるのですか? – Philipp
これはコードワードのチャレンジからのものです。 min()とmax()という名前の関数が定義されています。再帰を避けるために、別のものを使うべきです。 –