【发布时间】:2013-02-25 10:52:11
【问题描述】:
假设给定一个长度为 4 的向量,其中包含最小值 (0,0,0,0) 和最大值 (2,1,3,2)。我想找到这个范围内的所有整数向量,例如,5。
以下代码实现了这一点:
maxvalues = (2,1,3,2)
k = 5
t = []
for x1 in range(maxvalues[0]+1):
for x2 in range(maxvalues[1]+1):
for x3 in range(maxvalues[2]+1):
for x4 in range(maxvalues[3]+1):
if x1+x2+x3+x4 is k:
t.append((x1,x2,x3,x4))
但是,这段代码不能很好地推广到更大的向量,而且似乎效率有点低。有没有人有一个很好的方法来概括这一点?
编辑:小错误,忘记了 if 语句
【问题讨论】:
-
你快到了。只要找到一种方法使其成为递归搜索,您就会对其进行概括!
-
作为旁注。不要使用
is进行相等测试。数字没有坏处。但是如果你习惯了它,当你使用其他物体时它可能会咬你。 -
更大的数字也可能不相同。
标签: python vector iteration combinations