खैर, यह भी कहते हैं:
सबसे दायीं ओर का तत्व हर यात्रा पर आगे बढ़ के साथ एक ओडोमीटर तरह नेस्टेड छोरों चक्र। यह पैटर्न एक लेक्सिकोग्राफिक ऑर्डरिंग बनाता है ताकि अगर इनपुट के पुनरावृत्तियों को क्रमबद्ध किया गया हो, तो उत्पाद टुपल्स क्रमबद्ध क्रम में उत्सर्जित होते हैं।
यह काफी है कि यह कैसे लागू करने में काम करता है (Modules/itertoolsmodule.c
)
यहाँ राज्य वस्तु है:
typedef struct {
PyObject_HEAD
PyObject *pools; /* tuple of pool tuples */
Py_ssize_t *indices; /* one index per pool */
PyObject *result; /* most recently returned result tuple */
int stopped; /* set to 1 when the product iterator is exhausted */
} productobject;
और अगले आइटम समारोह product_next
है, जो इस का उपयोग करता है के द्वारा दिया जाता है अगले राज्य को उत्पन्न करने के लिए उद्धरण में वर्णित राज्य और एल्गोरिदम। स्मृति आवश्यकताओं को समझने के लिए this answer देखें।
सामान्य शिक्षा के लिए, आप सी एक्सटेंशन here से राज्य के साथ जेनरेटर बनाने के तरीके के बारे में पढ़ सकते हैं।
स्रोत
2012-05-23 12:56:11
संभावित डुप्लिकेट [मुझे itertools.product के साथ मेमोरी एरर क्यों मिलता है?] (Http://stackoverflow.com/q/8695422/222914) –