Python中列表的逐步子集设置

Python中列表的逐步子集设置,python,Python,我当前的解决方案如下所示: import numpy as np chunksize = 10 l = list(np.arange(0,99)) while len(l) > chunksize: l_subset = l l_subset = l_subset[0:chunksize] l.pop(0) print(l_subset) 这看起来不是一个非常有效的解决方案,因为.pop需要遍历列表。有什么快速方法可以做到这一点?您可以使用 del l

我当前的解决方案如下所示:

import numpy as np

chunksize = 10
l = list(np.arange(0,99))

while len(l) > chunksize:
    l_subset = l
    l_subset = l_subset[0:chunksize]
    l.pop(0)
    print(l_subset)
这看起来不是一个非常有效的解决方案,因为.pop需要遍历列表。有什么快速方法可以做到这一点?

您可以使用

del l[0]

这将只删除索引为零的项而不返回它。

使用numpy是我找到的最快的解决方案:

import numpy as np
import time
chunksize = 10
arr = np.arange(0,99999)
l = list(arr)

start = time.time()
while len(l) > chunksize:
    l_subset = l
    l_subset = l_subset[0:chunksize]
    l.pop(0)
runTime = time.time()-start
print(runTime) #0.8397529125213623s

l = list(arr)
start = time.time()
while len(l) > chunksize:
    l_subset = l
    l_subset = l_subset[0:chunksize]
    del l[0]
 runTime = time.time()-start
 print(runTime) #0.879807710647583s

 start = time.time()
 lower = 0
 upper = chunksize
 n_subset = int(len(arr)/chunksize)
 for i in range(n_subset):
     arr[lower:upper]
     lower = lower + 1
     upper = upper + 1
runTime = time.time()-start
print(runTime) # 0.002997159957885742s

你能解释一下你想做什么吗?顺便说一句,行
l_subset=l
是不必要的,可以是
l_subset=l[0:chunksize]
您到底想实现什么?你为什么要先把
l
复制到
l_子集
,然后立即用子集替换它,而不是
l_子集=l[0:chunksize]
?你的循环实际上不就是做
l[-chunksize:][/code>?