The goal of this program is to make as many permutations of x
in size 3
(nPr(5,3)
, hence the iterations of (i, j, k)
).
My effort on trying to achieve the permutations nPr(5,3)
, where 5
is the length of the list x
and 3
is the length of the tuple (i,j,k)
:
# x will never have any repeats
x = [1, 2, 3, 4, 5]
# nPr(5,3) = 60
y = []
for i in x:
for j in x:
for k in x:
y.append((i, j, k))
print(f"Len of y = {len(y)}")
I'm expecting len(y)
to be 60, as nPr(5,3) = 60
. But i get the output Len of y = 125
. Also, making y = set()
does not fix this issue
itertools
)Answer TL;DR: I was allowing duplicates (1,1,1)
You are allowing repeats (for example, [1,1,1] and [2,2,2]). The value of 60 is for permutations without repeats. You do that by checking that you aren't repeating a value.
NOTE that this code only works if there are no repeats in x
. If there are duplicates, then you would have to use indexes instead (that is, for i in range(len(x)):
).
x = [1,2,3,4,5]
y = []
for i in x:
for j in x:
if i == j:
continue
for k in x:
if i!=k and j!= k:
y.append((i,j,k))
print(y)