假设给我一个长度为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语句
使用
itertools.product
尽管将
^{pr2}$product
对象直接转换为列表会更好(也更通用)。在如果包含
if
语句,它将如下所示。在相关问题 更多 >
编程相关推荐