29

重複の可能性:
リスト内で最長の文字列を選択するPythonの最も効率的な方法は?

私はリストLを持っています

L = [[1,2,3],[5,7],[1,3],[77]]

[1,2,3]は長さ3であり、4つのサブリストの中で最も長いため、ループすることなく最長のサブリストの長さを返します。この場合は3です。len(max(L))を試しましたが、これではうまくいきません。これを行う方法はありますか、それともループが私の唯一の方法ですか?

4

2 に答える 2

61

max(L,key=len)最長の長さのオブジェクトを提供[1,2,3]します(あなたの例では)-実際に長さを取得するには(それがすべての場合)、少し醜いことを行うことができますlen(max(L,key=len))-私はそれを2行に分割します. または、ecatamur が提供するバージョンを使用できます。

これらの回答にはすべてループがあります。私の場合、ループは暗黙的であり、通常は最適化されたネイティブ マシン コードで実行されることを意味します。考えてみれば、どの要素が一番長いか、いちいち見ないでどうやってわかるの?


key=function最後に、これは に固有の機能ではないことに注意してくださいmax。多くの Python ビルトイン ( maxminsorteditertools.groupby...) は、この特定のキーワード引数を使用します。それがどのように機能し、通常は何をするのかを理解するために少し時間を費やすことは間違いなく価値があります.

于 2012-11-15T15:38:13.463 に答える
18

理解してみてください:

max(len(l) for l in L)
于 2012-11-15T15:38:17.940 に答える