代码之家  ›  专栏  ›  技术社区  ›  Natim

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

  •  2
  • Natim  · 技术社区  · 14 年前

    我在尽量简化这个函数,我该怎么办?

    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 回复  |  直到 4 年前
        1
  •  4
  •   adamk    14 年前

    您可以删除这两行:

    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
    
        2
  •  2
  •   Russell Borogove    14 年前

    只需使用max(items)。

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

        3
  •  2
  •   SilentGhost    14 年前
    def eleMax(items, start=None, end=None):
        return max(items[slice(start, end)])
    
        4
  •  1
  •   kevpie    14 年前

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

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

    Itertools包含islice,该islice允许在不实际返回切片的新列表的情况下对列表进行迭代。

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