Конкретный выбор и перестановки в Python - PullRequest
0 голосов
/ 22 октября 2018

Я хочу что-то подобное, Кто-нибудь может мне помочь, пожалуйста?
some_function([1,2],3): print([1,1,1])

`print([1,1,2])`  

print([1,2,1])
print([2,1,1])

print([1,2,2]) print([2,1,2])
print([2,2,1])

`print([2,2,2])  `

1 Ответ

0 голосов
/ 22 октября 2018

Я интерпретирую этот вопрос как «как мне написать функцию, которую я могу дать [1,2] и 3, и получить обратно все комбинации этих элементов с такой длиной? Например (1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2), (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2) ".Вы можете сделать это с помощью itertools.product :

>>> import itertools
>>> list(itertools.product([1,2], repeat=3))
[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2), (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]

Если по какой-либо причине вы не хотите импортировать модуль, чтобы выполнить это, в документации удобно представлена ​​реализациядля этого требуются только встроенные функции:

def product(*args, repeat=1):
    # product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
    # product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
    pools = [tuple(pool) for pool in args] * repeat
    result = [[]]
    for pool in pools:
        result = [x+[y] for x in result for y in pool]
    for prod in result:
        yield tuple(prod)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...