दिलचस्प पोस्ट
यूयूआईडी को नंबर के रूप में कैसे स्टोर करना है? WPF – कैसे टेम्पलेट के साथ छवि बटन बनाने के लिए भविष्य में किसी विशिष्ट समय में एक बार फाइल चलाने के लिए क्रोन को सेटअप कैसे करें? एचटीएमएल 5 वीडियो क्लाइंट के लिए वास्तविक समय http स्ट्रीमिंग के लिए सर्वश्रेष्ठ दृष्टिकोण एजेक्स में 302 रीडायरेक्ट को संभाल नहीं सकते हैं और क्यों? दो सरणियों को PHP में कुंजी मान जोड़े के रूप में मिलाएं कैसे ggplot2 में एक बार प्लॉट में सलाखों के बीच की जगह को बढ़ाने के लिए? Django queryset फ़िल्टरिंग में मैं एक समान नहीं हूं? .htaccess www से SSL / HTTPS के साथ गैर-www पुनर्निर्देशित करें सी ++ में मुझे फ़ॉर्मेटमैसेज () ठीक से कैसे उपयोग करना चाहिए? किसी अन्य प्रोजेक्ट में एक एंड्रॉइड लाइब्रेरी प्रोजेक्ट गतिविधि का उपयोग करना एक बटन का उपयोग करके प्रिंटर में जेएलैबल का आइकन प्रिंट करें पथ का कोई हिस्सा नहीं मिल सका … bin \ roslyn \ csc.exe nginx अपलोड client_max_body_size समस्या Windows 8 में GraphViz के निष्पादनयोग्य को पाइडॉट क्यों नहीं पा रहा है?

सूचियों की सूची के सभी संयोजन

मैं मूल रूप से List<List<int>> के संयोजन के एक अजगर संस्करण की तलाश कर रहा हूँ

सूचियों की एक सूची को देखते हुए, मुझे एक नई सूची की आवश्यकता है जो सूची के बीच सभी संभावित संयोजनों को देता है।

 [[1,2,3],[4,5,6],[7,8,9,10]] -> [[1,4,7],[1,4,8],...,[3,6,10]] 

सूचियों की संख्या अज्ञात है, इसलिए मुझे कुछ चाहिए जो सभी मामलों के लिए काम करता है लालित्य के लिए बोनस अंक!

Solutions Collecting From Web of "सूचियों की सूची के सभी संयोजन"

आपको इसकी आवश्यकता है। itertools.product :

 >>> import itertools >>> a = [[1,2,3],[4,5,6],[7,8,9,10]] >>> list(itertools.product(*a)) [(1, 4, 7), (1, 4, 8), (1, 4, 9), (1, 4, 10), (1, 5, 7), (1, 5, 8), (1, 5, 9), (1, 5, 10), (1, 6, 7), (1, 6, 8), (1, 6, 9), (1, 6, 10), (2, 4, 7), (2, 4, 8), (2, 4, 9), (2, 4, 10), (2, 5, 7), (2, 5, 8), (2, 5, 9), (2, 5, 10), (2, 6, 7), (2, 6, 8), (2, 6, 9), (2, 6, 10), (3, 4, 7), (3, 4, 8), (3, 4, 9), (3, 4, 10), (3, 5, 7), (3, 5, 8), (3, 5, 9), (3, 5, 10), (3, 6, 7), (3, 6, 8), (3, 6, 9), (3, 6, 10)] 

अजगर 2.6 में itertools.product का उपयोग करने के लिए सबसे सुरुचिपूर्ण समाधान है

यदि आप Python 2.6 का उपयोग नहीं कर रहे हैं, तो itertools.product के लिए दस्तावेज़ वास्तव में उत्पाद को "मैनुअल" तरीके से करने के लिए एक समान कार्य दिखाते हैं:

 def product(*args, **kwds): # product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy # product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111 pools = map(tuple, args) * kwds.get('repeat', 1) result = [[]] for pool in pools: result = [x+[y] for x in result for y in pool] for prod in result: yield tuple(prod) 
 listOLists = [[1,2,3],[4,5,6],[7,8,9,10]] for list in itertools.product(*listOLists): print list; 

मुझे आशा है कि आपको लगता है कि जैसा कि मैंने पहले किया था, जैसा कि मैंने पहले किया था, उतना ही सुरुचिपूर्ण था।

नम्पी यह कर सकता है:

  >>> import numpy >>> a = [[1,2,3],[4,5,6],[7,8,9,10]] >>> [list(x) for x in numpy.array(numpy.meshgrid(*a)).T.reshape(-1,len(a))] [[ 1, 4, 7], [1, 5, 7], [1, 6, 7], ....] 

इस कार्य के लिए सीधे पुनरावर्तन में कुछ भी गलत नहीं है, और यदि आपको एक संस्करण की आवश्यकता है जो स्ट्रिंग्स के साथ काम करता है, तो यह आपकी आवश्यकताओं के अनुरूप हो सकता है:

 combinations = [] def combine(terms, accum): last = (len(terms) == 1) n = len(terms[0]) for i in range(n): item = accum + terms[0][i] if last: combinations.append(item) else: combine(terms[1:], item) >>> a = [['ab','cd','ef'],['12','34','56']] >>> combine(a, '') >>> print(combinations) ['ab12', 'ab34', 'ab56', 'cd12', 'cd34', 'cd56', 'ef12', 'ef34', 'ef56']