2013-02-18 92 views
14

पायथन में, मैं n द्विआधारी मूल्य 0 और 1 के सभी संयोजन कैसे प्राप्त कर सकता हूं?एन बाइनरी मान के सभी संयोजन कैसे प्राप्त करें?

उदाहरण के लिए, यदि n = 3, मैं

[ [0,0,0], [0,0,1], [0,1,0], [0,1,1], ... [1,1,1] ] #total 2^3 combinations 

मैं यह कैसे कर सकते करना चाहते हैं?

+0

@eumiro की तरह मिल सकता है दे देंगे के बाद, मुझे लगता है कि मेरा प्रश्न भी इसके बराबर है, http://stackoverflow.com/questions/3252528/converting-a-number-to-binary-with-a-fix एड-लम्बाई, लेकिन वह उत्तर किसी सूची की बजाय स्ट्रिंग देता है। – LWZ

उत्तर

35

उपयोग itertools.product

import itertools 
lst = list(itertools.product([0, 1], repeat=3)) 

यह tuples की एक सूची निकलेगा (here देखें)

आप आसानी से इस का उपयोग करने के बदल सकते हैं एक चर repeat:

n = 3 
lst = list(itertools.product([0, 1], repeat=n)) 

आप एक की जरूरत है सूचियों की सूची, फिर आप map फ़ंक्शन का उपयोग कर सकते हैं (धन्यवाद @Aesthete)।

lst = map(list, itertools.product([0, 1], repeat=n)) 

या अजगर 3 में:

lst = list(map(list, itertools.product([0, 1], repeat=n))) 
# OR 
lst = [list(i) for i in itertools.product([0, 1], repeat=n)] 

ध्यान दें कि map का उपयोग कर या एक सूची समझ के रूप में यह itertools.product वस्तु के माध्यम से पुनरावृति जाएगा आप एक ऐसी सूची में उत्पाद में परिवर्तित करने की आवश्यकता नहीं है और एक सूची का उत्पादन करें।

+3

+1 - 'मानचित्र (सूची, उत्पाद ([0, 1], दोहराना = 3)) ओपी रुचि रखने के मामले में वही प्रारूप वापस कर देगा। – Aesthete

+0

यह बहुत अच्छा है, tuple भी ठीक है। – LWZ

+0

@ जिज्ञासा, जिज्ञासा की बस, आप इसे कैसे जानते हैं? मुझे कोई संकेत नहीं था कि इस फ़ंक्शन को पायथन दस्तावेज़ से कैसे ढूंढें। – LWZ

1

आप इस तरह के सभी संयोजनों

bin = [0,1] 
[ (x,y,z) for x in bin for y in bin for z in bin ] 
+1

वह केवल एक उदाहरण के रूप में 'n = 3' देता है, इसलिए वह यह parametrized होना चाहता है। – eumiro

+0

यह काम करता है लेकिन एन बड़ा नहीं हो सकता है ... – LWZ

3

किसी में-निर्माण कार्यों का उपयोग कर के बिना या स्मार्ट तकनीक हम इस

def per(n): 
    for i in range(1<<n): 
     s=bin(i)[2:] 
     s='0'*(n-len(s))+s 
     print map(int,list(s)) 
per(3) 

उत्पादन

[0, 0, 0] 
[0, 0, 1] 
[0, 1, 0] 
[0, 1, 1] 
[1, 0, 0] 
[1, 0, 1] 
[1, 1, 0] 
[1, 1, 1]