Reputation: 709
Note: I'm working in python on this.
For example, given a list:
list = ['a','b','c','d','e','f','g','h','i','j']
I want to generate a list of lists with all possible 3-item combinations:
['a','b','c'],
['a','b','d'],
['a','b','e']
The permutations should not use the same item twice in a permutation, but the order is important and represents distinct permutations that should be included, e.g.,
['a','b','c'],
['a','c','b']
Should both be included.
"3" is the magic length for the permutations I'm looking to generate, but I wouldn't look down on a solution for arbitrary length permutations.
Thanks for any help!
Upvotes: 35
Views: 40764
Reputation: 433
In case you need all combinations of a list with length n where n may be larger than the list elements, and also with repeated elements:
import itertools
list(itertools.product([-1,1], repeat=3))
[(-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]
imagine a cartesian product like [-1,1]x[-1,1]x[-1,1]
Upvotes: 13
Reputation: 5492
You should use the permutations
function from the itertools
module.
>>> import itertools
>>> lst = ['a','b','c','d','e','f','g','h','i','j']
>>> itertools.permutations(lst, 3)
Or, if you really want to get combinations, then use the combinations
function.
Upvotes: 4
Reputation: 724
Assuming you're in python 2.6 or newer:
from itertools import permutations
for i in permutations(your_list, 3):
print i
Upvotes: 18