将列表平均分成两部分的最有效方法是什么
我需要把一个列表分成两半,如果这个列表的长度是奇数,就完全忽略中间的那个元素。我有一个函数可以做到这一点,但它的速度对于我想做的事情来说有点慢。
我的函数(变量名改了,因为不在上下文中就没什么意义):
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:]