पर विचार करें निम्नलिखित समारोह, जिसका उत्पादन माना जाता है iterables का एक अनुक्रम की कार्तीय उत्पाद होने के लिए:मेरा कार्टेशियन उत्पाद फ़ंक्शन क्यों काम नहीं करता है?
def cart(*iterables):
out = ((e,) for e in iterables[0])
for iterable in iterables[1:]:
out = (e1 + (e2,) for e1 in out for e2 in iterable)
return out
ठीक काम करता है जब जनरेटर comprehensions सूची comprehensions बदल दिए जाते हैं। यह भी काम करता है जब केवल 2 पुनरावृत्त होते हैं। लेकिन जब मैं
print(list(cart([1, 2, 3], 'ab', [4, 5])))
कोशिश मैं
[(1, 4, 4), (1, 4, 5), (1, 5, 4), (1, 5, 5),
(2, 4, 4), (2, 4, 5), (2, 5, 4), (2, 5, 5),
(3, 4, 4), (3, 4, 5), (3, 5, 4), (3, 5, 5)]
क्यों इस और नहीं कार्तीय उत्पाद मिल सकता है?
आप मध्यवर्ती परिणामों को स्मृति में संग्रहीत कर सकते हैं (जैसे सूची दृष्टिकोण जो काम करता है) और उस जीन के साथ उनके मूल्यांकन को स्थगित नहीं करते हैं। exp। जिनके मूल्य बार-बार पुनरावृत्तियों में बदल रहे हैं। –
मुझे पता है कि यह प्रश्न पायथन में कार्टेशियन उत्पाद के लिए एल्गोरिदम लागू करने के बारे में है, लेकिन अगर कोई यहां पाइथन में कार्टेशियन उत्पाद को कैसे खोजता है, तो ध्यान दें कि यह पहले से ही ['itertools.product'] में लागू है (https://docs.python.org/3/library/itertools.html#itertools.product)। – jdehesa