1

我有这个数组:

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

我想找出哪个数组的元素有更多行以及有多少行。我想要这个 ruby​​ 代码在 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 回答