1

私はこの配列を持っています:

array = ["a\nb", "c", "d"]

どの配列の要素に行が多く、何行あるかを知りたいです。Pythonでこのルビーコードが欲しい:

array.map {|e| e.split("\n").size }.max #=> 2

これはうまくいきますが、もっと良い方法があるかどうか知りたいです:

bigger = 0
for e in array:
    e_lines = len(e.split('\n'))
    if e_lines > bigger:
        bigger = e_lines
4

3 に答える 3

4

できるよ:

max(array, key=lambda x: x.count('\n'))

そして.count('\n')、結果のオブジェクトの+ 1を取得して、いくつあるかを知るだけです

于 2013-02-14T20:26:20.920 に答える
4
In [54]: array = ["a\nb", "c", "d"]
In [56]: max(e.count("\n") for e in array)+1
Out[56]: 2

最大行数の (おそらく一意ではない) 要素も必要な場合:

In [60]: max((e.count("\n")+1, e) for e in array)
Out[60]: (2, 'a\nb')
于 2013-02-14T20:26:32.557 に答える
2

正確な機能が必要な場合は、次のようになります。

>>> array = ["a\nb", "c", "d"]
>>> [len(l.split('\n')) for l in array]
[2, 1, 1]
>>> max(len(l.split('\n')) for l in array)
2

しかし、unutbu のソリューションの方が速いかもしれません。

于 2013-02-14T20:47:22.740 に答える