如何在 Python 中生成新的排列?



我有一个问题;可能答案很简单,但我找不到。

我创建了一个函数,它工作正常。

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()

你想要一个产品:

>>> 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)]

或者,如果xy不同:

>>> 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)]

相关内容

  • 没有找到相关文章