【发布时间】:2014-12-14 14:18:31
【问题描述】:
假设我有一个元组:
my_tuple = ((1,2), 10)
还有一本字典:
diction = {1:(1,2,3,4,5,6,7,8,9), 2:(1,2,3,4,5,6,7,8,9), 3:(1,2,3,4,5,6,7,8,9)}
元组的第一个元素表示一些变量,每个变量都可以赋值为 1,...,9(根据字典)。
如何计算这些变量的所有排列(不重复)。 我唯一的限制是我希望我的变量的值总和为 10。
例如:
(var1) = 9
(var2) = 1
所以 (9,1) 的和为 10,是一个有效的排列。
我试过的是:
lst = []
first_var = my_tuple[0][0]
sec_var = my_tuple[0][1]
for i in diction[first_var]:
for j in diction[sec_var]:
if i != j:
if (i + j) == my_tuple[1]:
lst.append((i,j))
我的问题是带有变量的元组并不总是相同的大小(在这种情况下为 2)。它可能有 3 或 4 个变量,所以上面的循环不起作用。
有什么方法可以计算更一般情况下的排列吗?例如,((1,2,3), 20)?
【问题讨论】:
-
是否应该使用与元组中的键对应的每个字典值中的一个值?
-
您可以为您的示例添加示例输出吗?
-
对于元组 = ((1,2,3), 20),有效的排列是 (8,9,3)。问题是我的循环仅适用于 2 个变量。
-
@prokiz 你为什么要检查
i != j? 5 + 5 也是 10,对吧? -
我想要没有重复的排列。 :]
标签: python algorithm python-2.7 permutation