## How to get all possible combinations of a list’s elements?

Have a look at itertools.combinations:

`itertools.combinations(iterable, r)`

Return r length subsequences of elements from

the input iterable.Combinations are emitted in lexicographic sort order. So, if the

input iterable is sorted, the

combination tuples will be produced in

sorted order.

Since 2.6, batteries are included!

## How to get every possible combination of list integers?

Try `itertools.permutations`

:

`from itertools import permutations`

L = [3, 4, 1, 5, 9]

for i in range(1, len(L) + 1):

for p in permutations(L, i):

print(int("".join(map(str, p))))

Prints:

`3`

4

1

5

9

34

31

35

...

95431

95413

95134

95143

## Getting all possible combination for [1,0] with length 3 [0,0,0] to [1,1,1]

You're looking for a Cartesian product, not a combination or permutation of `[0, 1]`

. For that, you can use `itertools.product`

.

`from itertools import product`

items = [0, 1]

for item in product(items, repeat=3):

print(item)

This produces the output you're looking for (albeit in a slightly different order):

`(0, 0, 0)`

(0, 0, 1)

(0, 1, 0)

(0, 1, 1)

(1, 0, 0)

(1, 0, 1)

(1, 1, 0)

(1, 1, 1)

## How to determine all the possible combinations given a list of binary numbers (0s or 1s or None) of length n?

You can use itertools.product:

`from itertools import product`

alphabet = [0, 1, None]

for x in product(alphabet, repeat=3):

print(x)

Output:

`(0, 0, 0)`

(0, 0, 1)

(0, 0, None)

(0, 1, 0)

(0, 1, 1)

(0, 1, None)

(0, None, 0)

(0, None, 1)

(0, None, None)

(1, 0, 0)

(1, 0, 1)

(1, 0, None)

(1, 1, 0)

(1, 1, 1)

(1, 1, None)

(1, None, 0)

(1, None, 1)

(1, None, None)

(None, 0, 0)

(None, 0, 1)

(None, 0, None)

(None, 1, 0)

(None, 1, 1)

(None, 1, None)

(None, None, 0)

(None, None, 1)

(None, None, None)

## How to get all combination for a given sum with a given number of elements

A very simple approach is to use `itertools.combinations`

to generate all the possible combinations, and select those that produce the desired sum.

`>>> import itertools`

>>> numbers = [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9]

>>> target_sum = 1

>>> number = 3

>>> [c for c in itertools.combinations(numbers, number) if sum(c) == target_sum]

[(0.1, 0.2, 0.7), (0.1, 0.3, 0.6), (0.1, 0.4, 0.5), (0.2, 0.3, 0.5)]

If you want all the possible different orderings as distinct solutions, use `itertools.permutations`

instead:

`>>> [c for c in itertools.permutations(numbers, number) if sum(c) == target_sum]`

[(0.1, 0.2, 0.7), (0.1, 0.3, 0.6), (0.1, 0.4, 0.5), (0.1, 0.5, 0.4), (0.1, 0.6, 0.3), (0.1, 0.7, 0.2), (0.2, 0.1, 0.7), (0.2, 0.3, 0.5), (0.2, 0.5, 0.3), (0.3, 0.1, 0.6), (0.3, 0.2, 0.5), (0.3, 0.5, 0.2), (0.4, 0.1, 0.5), (0.4, 0.5, 0.1), (0.5, 0.1, 0.4), (0.5, 0.2, 0.3), (0.5, 0.3, 0.2), (0.5, 0.4, 0.1), (0.6, 0.1, 0.3), (0.7, 0.1, 0.2)]

If you want to be able to use each element more than once, use `itertools.combinations_with_replacement`

:

`>>> [c for c in itertools.combinations_with_replacement(numbers, number) if sum(c) == target_sum]`

[(0.1, 0.1, 0.8), (0.1, 0.2, 0.7), (0.1, 0.3, 0.6), (0.1, 0.4, 0.5), (0.2, 0.2, 0.6), (0.2, 0.3, 0.5), (0.2, 0.4, 0.4), (0.3, 0.3, 0.4)]

If you want to use elements multiple times *and* get all the possible orderings, use `itertools.product`

:

`>>> [c for c in itertools.product(numbers, repeat=number) if sum(c) == target_sum]`

[(0.1, 0.1, 0.8), (0.1, 0.2, 0.7), (0.1, 0.3, 0.6), (0.1, 0.4, 0.5), (0.1, 0.5, 0.4), (0.1, 0.6, 0.3), (0.1, 0.7, 0.2), (0.1, 0.8, 0.1), (0.2, 0.1, 0.7), (0.2, 0.2, 0.6), (0.2, 0.3, 0.5), (0.2, 0.4, 0.4), (0.2, 0.5, 0.3), (0.2, 0.6, 0.2), (0.3, 0.1, 0.6), (0.3, 0.2, 0.5), (0.3, 0.3, 0.4), (0.3, 0.4, 0.3), (0.3, 0.5, 0.2), (0.4, 0.1, 0.5), (0.4, 0.2, 0.4), (0.4, 0.3, 0.3), (0.4, 0.4, 0.2), (0.4, 0.5, 0.1), (0.5, 0.1, 0.4), (0.5, 0.2, 0.3), (0.5, 0.3, 0.2), (0.5, 0.4, 0.1), (0.6, 0.1, 0.3), (0.6, 0.2, 0.2), (0.7, 0.1, 0.2), (0.8, 0.1, 0.1)]

## How can I get all combinations of a list?

Working code:

`import itertools`

numbers = [1, 2, 3]

result = []

for n in range(1, len(numbers) + 1):

for x in itertools.permutations(numbers, n): # n - length of each permutation

result.append(int(''.join(map(str, x))))

print(result)

Output:

`[1, 2, 3, 12, 13, 21, 23, 31, 32, 123, 132, 213, 231, 312, 321]`

### Related Topics

ASP.NET Web Application Message Box

Mixed Mode Assembly Is Built Against Version 'V1.1.4322'

Running a Method in Backgroundworker and Showing Progressbar

Configureawait Pushes the Continuation to a Pool Thread

How to Deserialize Xml with Dynamic Element Names

What Difference Is There Between Webclient and Httpwebrequest Classes in .Net

Convert Array of Integers to Comma-Separated String

Draw on the Screen Without a Form

Webapi Formdata Upload (To Db) with Extra Parameters

How to Check If Int Is Legal Enum in C#

Can the Oracle Managed Driver Use Async/Await Properly

Group by Variable Integer Range Using Linq

Strange Behaviour of Console.Readkey() with Multithreading

Queuing in Oneway Wcf Messages Using Windows Service and SQL Server

How Can Xml Documentation for Web API Include Documentation from Beyond the Main Project