Home > Enterprise >  Get all possible boolean sequences for a given list length
Get all possible boolean sequences for a given list length

Time:03-24

Given a random list length, how can I efficiently get all possible sequences of boolean values, except strings that are all True or all False?

For instance, given the number 3 it should return something like the following.

[True, False, False],
[True, True, False],
[True, False, True],
[False, True, False],
[False, True, True],
[False, False, True],

Is there already a known function that does this?

The order that it returns the sequences in is not important. I mainly just need a number of how many sequences are possible for a given list length.

CodePudding user response:

You don't need a function to determine this. Simple math will do the trick.

2**n - 2 

2 because there are only two options (True/False)
n is your list length
-2 because you want to exclude the all True and all False results

CodePudding user response:

This is more of a maths question, but here goes:

The number of total options is equal to the multiplication of the number of options per position, so, if you receive 3 as input:

index[0] could be true or false - 2
index[1] could be true or false - 2
index[2] could be true or false - 2
index has a total of 6 options.

CodePudding user response:

This is mostly a maths question, unless you need the sequences themselves. If you do, there is a neat python solution:

from itertools import product

[seq for seq in product((True, False), repeat=3)][1:-1]

The list comprehension will contain all possible sequences, but we don't want (True, True, True) and (False, False, False). Conveniently, these will be the first and last element respectively, so we can simply discard them, using slicing from 1 to -1.

For sequences with different lengths, just change the "repeat" optional argument of the itertools.product function.

  • Related