সম্ভাব্য সদৃশ:
আপনি কীভাবে পাইথনে সমান আকারের অংশগুলিতে একটি তালিকা ভাগ করবেন?
আমি অবাক হই আমি এমন একটি "ব্যাচ" ফাংশনটি খুঁজে পেলাম না যা ইনপুট হিসাবে পুনরাবৃত্ত হবে এবং পুনরাবৃত্তের পুনরাবৃত্ত হবে।
উদাহরণ স্বরূপ:
for i in batch(range(0,10), 1): print i
[0]
[1]
...
[9]
or:
for i in batch(range(0,10), 3): print i
[0,1,2]
[3,4,5]
[6,7,8]
[9]
Now, I wrote what I thought was a pretty simple generator:
def batch(iterable, n = 1):
current_batch = []
for item in iterable:
current_batch.append(item)
if len(current_batch) == n:
yield current_batch
current_batch = []
if current_batch:
yield current_batch
But the above does not give me what I would have expected:
for x in batch(range(0,10),3): print x
[0]
[0, 1]
[0, 1, 2]
[3]
[3, 4]
[3, 4, 5]
[6]
[6, 7]
[6, 7, 8]
[9]
So, I have missed something and this probably shows my complete lack of understanding of python generators. Anyone would care to point me in the right direction ?
[Edit: I eventually realized that the above behavior happens only when I run this within ipython rather than python itself]