如何在Python中返回列表的最大元素?

时间:2010-10-08 17:41:28

标签: python slice

我试图最大限度地简化这个功能,我该怎么办?

def eleMax(items, start=0, end=None):
    if end is None:
        end = len(items)
    return max(items[start:end])

我虽然

def eleMax(items, start=0, end=-1):
    return max(items[start:end])

但是从列表中删除了最后一个元素。

感谢您的帮助。

4 个答案:

答案 0 :(得分:4)

您可以删除这两行:

if end is None:
    end = len(items)

该功能将完全相同:

>>> a=[5,4,3,2,1]
>>> def eleMax(items, start=0, end=None):
...     return max(items[start:end])
...
>>> eleMax(a,2)   # a[2:] == [3,2,1]
3

答案 1 :(得分:2)

只需使用max(items)。

Python范围是“半开放”。使用[start:end]语法在Python中对列表进行切片时,将包含start,并省略结束。

答案 2 :(得分:2)

def eleMax(items, start=None, end=None):
    return max(items[slice(start, end)])

答案 3 :(得分:1)

当操作大型列表或多次调用时,可以避免创建新列表和复制指针的切片开销。

http://docs.python.org/library/itertools.html#itertools.islice

Itertools包含islice,它允许在列表上迭代而不实际返回切片的新列表。

from itertools import islice

def eleMax(items, start=None, end=None):
    return max(itertools.islice(items, start, end))

目前的一个限制是开始,结束,步骤不允许使用负值。