我有一个问题;可能答案很简单,但我找不到。
我创建了一个函数,它工作正常。
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)]
或者,如果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)]