Python列表切片性能



我发现后者效率更高(快了几个数量级)。这有什么原因吗?

block = data[y * block_length:y * (block_length + 1)] # Slow

block = [data[y * block_length + z] for z in xrange(block_length)] # Fast
编辑:

使用Numpy(这可能是原因),请参阅http://pastebin.com/88KkWd79上的代码运行时间为python test.py atime python test.py b,当功率变大时,函数b开始花费更长的时间

第一个应该快得多。但是,请注意这两个列表是不相等的。第一个有y项,而第二个有block_length项。如果y非常大(例如,因为你将一个非常长的列表分成相对较小的块),这可能会导致运行时间的差异。

可能你的意思是:

block = data[y * block_length : (y + 1) * block_length]

最新更新