假設給出了一個長度爲4的矢量,其中最小值(0,0,0,0)和最大值(2,1,3,2) )。我想找到在此範圍內,加起來,說所有的整數向量,5Python:查找所有帶有約束元素的元組,並將它們合成一個常數
下面的代碼實現了:
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語句
你快到了。只要找到一種方法來使其成爲一個遞歸搜索,你將會推廣它! – Joe 2013-02-25 10:54:19
作爲一個方面說明。不要在平等測試中使用'is'。數字沒有壞處。但如果你習慣了它,當你使用其他物體時,它可能會咬你。 – StoryTeller 2013-02-25 10:59:48
更大的數字相同可能不完全相同。 – Fenikso 2013-02-25 11:24:38