B
bullockbefriending bard
I was able to google a recipe for a k_permutations generator, such
that i can write:
x = range(1, 4) # (say)
[combi for combi in k_permutations(x, 3)] =>
[[1, 1, 1], [1, 1, 2], [1, 1, 3], [1, 2, 1], [1, 2, 2], [1, 2, 3], [1,
3, 1], [1, 3, 2], [1, 3, 3], [2, 1, 1], [2, 1, 2], [2, 1, 3], [2, 2,
1], [2, 2, 2], [2, 2, 3], [2, 3, 1], [2, 3, 2], [2, 3, 3], [3, 1, 1],
[3, 1, 2], [3, 1, 3], [3, 2, 1], [3, 2, 2], [3, 2, 3], [3, 3, 1], [3,
3, 2], [3, 3, 3]]
but what i really want is the above without repetition, i.e.:
[combi for combi in k_permutations_without_repetitions(x, 3)] =>
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
For smallish lists, it's no problem to generate the list as follows:
no_reps_combis = [combi for combi in k_permutations(x, 3) if \
len(set(combi)) == 3]
but i'm sure there must be a way to do this as a pure generator, just
that i wouldn't have a clue how to go about it.
Help please, Python Gods!
Apologies in advance if I have got my terminology wrong and have been
googling the wrong stuff and therefore coming up blank.
that i can write:
x = range(1, 4) # (say)
[combi for combi in k_permutations(x, 3)] =>
[[1, 1, 1], [1, 1, 2], [1, 1, 3], [1, 2, 1], [1, 2, 2], [1, 2, 3], [1,
3, 1], [1, 3, 2], [1, 3, 3], [2, 1, 1], [2, 1, 2], [2, 1, 3], [2, 2,
1], [2, 2, 2], [2, 2, 3], [2, 3, 1], [2, 3, 2], [2, 3, 3], [3, 1, 1],
[3, 1, 2], [3, 1, 3], [3, 2, 1], [3, 2, 2], [3, 2, 3], [3, 3, 1], [3,
3, 2], [3, 3, 3]]
but what i really want is the above without repetition, i.e.:
[combi for combi in k_permutations_without_repetitions(x, 3)] =>
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
For smallish lists, it's no problem to generate the list as follows:
no_reps_combis = [combi for combi in k_permutations(x, 3) if \
len(set(combi)) == 3]
but i'm sure there must be a way to do this as a pure generator, just
that i wouldn't have a clue how to go about it.
Help please, Python Gods!
Apologies in advance if I have got my terminology wrong and have been
googling the wrong stuff and therefore coming up blank.