In Python, how can I get all combinations of n binary values 0 and 1?
For example, if n = 3, I want to have
[ [0,0,0], [0,0,1], [0,1,0], [0,1,1], ... [1,1,1] ] #total 2^3 combinations
How can I do this?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
import itertools lst = list(itertools.product([0, 1], repeat=3))
This will yield a list of tuples (see here)
You can easily change this to use a variable repeat:
n = 3 lst = list(itertools.product([0, 1], repeat=n))
If you need a list of lists, then you can use the map function (thanks @Aesthete).
lst = map(list, itertools.product([0, 1], repeat=n))
Or in Python 3:
lst = list(map(list, itertools.product([0, 1], repeat=n))) # OR lst = [list(i) for i in itertools.product([0, 1], repeat=n)]
Note that using map or a list comprehension means you don’t need to convert the product into a list, as it will iterate through the itertools.product object and produce a list.
Method 2
Without using any in-build functions or smart techniques we can get like this.
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)
output
[0, 0, 0] [0, 0, 1] [0, 1, 0] [0, 1, 1] [1, 0, 0] [1, 0, 1] [1, 1, 0] [1, 1, 1]
Method 3
Following will give you all such combinations
bin = [0,1] [ (x,y,z) for x in bin for y in bin for z in bin ]
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0