我有一个函数应该从列表中获取部分,然后在列表中移动以获取下一部分或部分:
def batch(iterable, n=1):
l = len(iterable)
for ndx in range(0, l, n):
yield iterable[ndx:min(ndx + n, l)]
我尝试使用此功能如下:
.............................
index =0;
values.clear()
for i in batch(my_data, 40):
values.append(i)
index = index +1
print('index', index )
更新
我所看到的是指数值达到58或20,而我期待40
提前谢谢!答案 0 :(得分:1)
关于代码的作用似乎有些混乱。使用n=40
调用时,它不会创建40个批次,但是每个批次长度为40个元素。因此,如果您像在循环中那样迭代批次并在每次迭代中增加index
,则不必最终在40
。
看看这个较小的例子:
lst = list(range(20))
for b in batch(lst, 7):
print(b)
在输出中,您可以看到没有7个但只有3个批次。
[0, 1, 2, 3, 4, 5, 6]
[7, 8, 9, 10, 11, 12, 13]
[14, 15, 16, 17, 18, 19]