Как генерировать новые перестановки в Python? - PullRequest
0 голосов
/ 10 октября 2019

У меня есть вопрос;возможно, ответ прост, но я не смог выяснить.

Я создал функцию, и она работает правильно.

x = 100
y = 100
A = (x ,y)

Поскольку я вручную определил x и y, проблем нетВот;но дело в том, что я хочу, чтобы все возможные (x, y) перестановки были опробованы в функции. Давайте предположим:

B = [(1,1), (1,2), (1,3), ...(99,99)]

Итак, как я могу сделать итерацию как:

for i in B:
    i == A

Это может быть плохой подход, но я верю, что вы понимаете мое намерение.

Спасибо с этого момента.

Редактировать:

Это функция:

K = []
L = []
M = []

def F():

    x = 100
    y = 100

    A = (x, y)

    for i in range(1, x):
        if x % i == 0:
            K.append((i))

    for j in range(1, y):
        if y % j == 0:
            L.append((j))

    P = sum(K[0:])
    R = sum(L[0:])

    if P == y and R == x:
        M.append(A)

    print(K, L)
    print(M)

F()

1 Ответ

0 голосов
/ 10 октября 2019

Требуется либо продукт:

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

, либо список комбинаций (только если x == y):

>>> list(itertools.combinations(range(1,5), 2))
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]

или если x и yразные:

>>> list(itertools.product(range(1,5), range(1,4)))
[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3), (4, 1), (4, 2), (4, 3)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...