for循环获取批量数据

时间:2018-02-22 04:48:02

标签: python python-3.x for-loop

M=2
for i in range(20):
    for item in range(M):
       print (data[item])
    item=item+1
    M=M+10

基本上我想分批获取数据,我的意思是我想循环20次,每次我想得到M数据

以上操作不起作用,设置为0 任何想法如何实现?

这是一个更好的例子

outlist = []
for m in range(20):
   for i in range(M):
     out=i
    outlist.append(out)
 print(outlist)

输出将是:

[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]

我希望输出为:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, .........]

1 个答案:

答案 0 :(得分:0)

以下是批处理或分块中使用列表的典型方法:

batch_size = 20
data = [1, 1, 2, 3, 5, 8, 13, ...]

for i in range(0, len(data), batch_size):
    print(data[i:i+batch_size])

如果您有迭代器而不是列表,则需要使用itertools.islice来完成类似的事情:

from itertools import islice

batch_size = 20
data = (i*2 for i in range(100))

while True:
    chunk = list(islice(data, 0, batch_size))
    if not chunk:
        break
    print(chunk)