将列表平均分成两部分的最有效方法是什么

2 投票
1 回答
4227 浏览
提问于 2025-04-18 09:01

我需要把一个列表分成两半,如果这个列表的长度是奇数,就完全忽略中间的那个元素。我有一个函数可以做到这一点,但它的速度对于我想做的事情来说有点慢。

我的函数(变量名改了,因为不在上下文中就没什么意义):

def splitList(array):
    half = len(array)/2
    if len(array)%2==0:
        return array[:half], array[half:]
    else:
        return array[:half], array[half+1:]

如果我的估计没错的话,这个函数大约需要调用1700万次,所以它必须快一点。不过我还是新手,如果你能解释一下你们的答案为什么更快,那就太好了 :)

最后补充一下:这是一个项目Euler挑战的小部分,如果你想知道的话,要求在一分钟内能得到答案,所以它必须非常快。

1 个回答

2

这个方法有效,看起来很简单:

def splitList(array):
    n = len(array)
    half = int(n/2) # py3
    return array[:half], array[n-half:]

撰写回答