संभव डुप्लिकेट:
आप पायथन में समान रूप से आकार के विखंडू में एक सूची को कैसे विभाजित करते हैं?
मुझे आश्चर्य है कि मुझे एक "बैच" फ़ंक्शन नहीं मिला जो इनपुट के रूप में एक पुनरावृत्ति ले और पुनरावृत्तियों के पुनरावृत्ति को वापस कर सके।
उदाहरण के लिए:
for i in batch(range(0,10), 1): print i
[0]
[1]
...
[9]
या:
for i in batch(range(0,10), 3): print i
[0,1,2]
[3,4,5]
[6,7,8]
[9]
अब, मैंने लिखा है कि मुझे लगा कि एक बहुत ही सरल जनरेटर था:
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
लेकिन उपरोक्त मुझे वह नहीं देता जिसकी मैंने उम्मीद की थी:
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]
इसलिए, मैंने कुछ याद किया है और यह संभवतः अजगर जनरेटर की समझ की पूरी कमी को दर्शाता है। कोई भी मुझे सही दिशा में इंगित करने के लिए परवाह करेगा?
[संपादित करें: मैंने अंततः महसूस किया कि उपरोक्त व्यवहार केवल तब होता है जब मैं इसे अजगर के बजाय इसे अजगर के भीतर चलाता हूं]