基本上,我想從給定列表l
中創建一個無限生成器,其批量大小爲batch_size
。舉例來說,如果我有l = [1, 2, 3, 4, 5]
和batch_size = 2
名單,我想產生的[1, 2]
,[3, 4]
,[5, 1]
,[2, 3]
無限循環......(類似於itertool.circular使用附加批量大小)從列表中生成循環批次
我目前的做法是因爲在結束後不給予正確的解決方案還沒有我只是墊列表的第一個元素,當我到達終點:
l = [1, 2, 3, 4, 5]
def generator(l, batch_size=2):
while 1:
for i in range(0, len(l), batch_size):
batch = l[i:(i + batch_size)]
if len(batch) < batch_size:
batch.extend(l[0: batch_size - len(batch)])
yield batch
>> gen = generator(l, batch_size=2)
>> next(gen) # [1, 2]
>> next(gen) # [3, 4]
>> next(gen) # [5, 1]
>> next(gen) # [1, 2] << want [2, 3] instead
有沒有辦法做到這一點以循環方式?
爲什麼分配給'x' ... –
@MosesKoledoye沒有好的重新不久,我可以刪除它 –
謝謝@ juanpa.arrivillaga!這很好地工作(在接受解決方案之前必須5分鐘)。 – titipata