दिलचस्प पोस्ट
शुद्ध सीएसएस का उपयोग करके मैं "टूलटिप पूंछ" कैसे बना सकता हूं? आरोपी वर्णों के लिए कंक्रीट जावास्क्रिप्ट रेगेक्स (डायक्रिटिक्स) स्विफ्ट में गणितीय पीआई स्थिरता कैसे प्राप्त करें CSS @ font-face – क्या करता है "src: local ('☺')" मतलब है? टी-एसक्यूएल के साथ एक तारीख बनाएं कैसे MSTest के साथ RowTest करने के लिए? AngularJS में ngInclude निर्देश के लिए मॉडल को कैसे निर्दिष्ट करें? एक्लिप्स में एंड्रॉइड स्टूडियो प्रोजेक्ट को कैसे खोलें? इकाई फ़्रेमवर्क – गुणों के कई स्तर शामिल करें क्या मैं एफ़टीपी एक्सेस प्रदान किए बिना WordPress प्लग इन को स्थापित / अपडेट कर सकता हूं? स्टैक स्मृति आकार इतनी सीमित क्यों है? इस ऑब्जेक्ट विधि परिभाषा को "फ़ंक्शन" कीवर्ड के बिना कैसे काम करता है? एंड्रॉइड के साथ एक फाइल डाउनलोड करें, और प्रगति डीआईएलओॉग में प्रगति दिखा रहा है AngularJs: फ़ाइल इनपुट क्षेत्रों में परिवर्तनों की जांच कैसे करें? # परिभाषित बनाम स्थिरांक के लाभ और नुकसान?

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

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

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

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

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

वेब के समाधान से एकत्रित समाधान "सूचियों की सूची के सभी संयोजन"

आपको इसकी आवश्यकता है। 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']