निम्नलिखित टुपल लें:
t = (('x', (1, 2, 3), ('A', 'B')),
('y', (5, 6), ('E', 'G')))
टुपल को कार्तीय में इस प्रकार कैसे बनाया जा सकता है:
(('x', 1, 'A'),
('x', 1, 'B'),
('x', 2, 'A'),
...
('y', 6, 'G')
निम्नलिखित काम नहीं करता है:
from itertools import product
[(product(zip(a[0], a[1], a[2]))) for a in t]
2 जवाब
zip
का उपयोग करने की आवश्यकता नहीं है, बस प्रत्येक टपल को अनपैक करें:
from itertools import product
data = (('x', (1, 2, 3), ('A', 'B')), ('y', (5, 6), ('E', 'G')))
result = [p for tup in data for p in product(*tup)]
for p in result:
print(p)
आउटपुट
('x', 1, 'A')
('x', 1, 'B')
('x', 2, 'A')
('x', 2, 'B')
('x', 3, 'A')
('x', 3, 'B')
('y', 5, 'E')
('y', 5, 'G')
('y', 6, 'E')
('y', 6, 'G')
यह XY समस्या का एक चरम उदाहरण है।
आप पृथ्वी पर ऐसा क्यों चाहेंगे? मुझे सच में लगता है कि आपकी वास्तविक समस्या कुछ पूरी तरह से अलग है, और दृढ़ता से सुझाव है कि आप पूछें कि आप वास्तव में क्या करने का इरादा रखते हैं।
लेकिन सिर्फ फॉर्म को संतुष्ट करने के लिए, यहाँ एक तरीका है:
from itertools import chain, starmap, product
tuple(chain.from_iterable(starmap(product, t)))
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।