Friday, July 1, 2022

How to generate all permutations of a list

Смотри https://docs.python.org/3/library/itertools.html#itertools.permutations

 (.env) boris@boris-All-Series:~/VOTING/ADABOOST$ cat permutationsList3.py

import itertools

def permutations(iterable, r=None):

    pool = tuple(iterable)

    n = len(pool)

    r = n if r is None else r

    if r > n:

        return

    indices = list(range(n))

    cycles = list(range(n, n-r, -1))

    yield tuple(pool[i] for i in indices[:r])

    while n:

        for i in reversed(range(r)):

            cycles[i] -= 1

            if cycles[i] == 0:

                indices[i:] = indices[i+1:] + indices[i:i+1]

                cycles[i] = n - i

            else:

                j = cycles[i]

                indices[i], indices[-j] = indices[-j], indices[i]

                yield tuple(pool[i] for i in indices[:r])

                break

        else:

            return

original = ['X','Y','Z']

perm_list = list(permutations(original,r=None))

print(perm_list) 

(.env) boris@boris-All-Series:~/VOTING/ADABOOST$ python3 permutationsList3.py

[('X', 'Y', 'Z'), ('X', 'Z', 'Y'), ('Y', 'X', 'Z'), ('Y', 'Z', 'X'), ('Z', 'X', 'Y'), ('Z', 'Y', 'X')]
































No comments:

Post a Comment