-1
我在使用python中的算法时遇到了问题。 我有一个4值的数组[a,b,c,d],这些是百分比,所以在任何给定的时间a + b + c + d = 1。我需要一个循环遍历所有可能的数字组合,步长为0.1。例如:循环搜索数组中的所有可能组合
[0,0,0,1]
[0,0,0.1,0.9]
[0,0.1,0.1,0.8]
[0.1,0.1,0.1,0.7]
.....
[0.1,0.1,0.2,0.6]
[0.1,0.1,0.3,0.5]
....
[1,0,0,0]
我创建了一个代码似乎溢出...任何帮助? TY我知道它的一个小白问题......
def frange(start, stop, step):
while start <= stop:
yield start
start += step
def distribuir(p,array):
if len(array) == 3:
array.append(p)
print(Array)
return
for i in frange(0,1,0.1):
temp = []
temp.append(array)
temp.append(i)
distribuir(p-i,temp)
那么,你有什么尝试?如果你不知道如何从“0.0”到“1.0”以0.1的步长循环,考虑如果你使用'range(10)'并将每个值乘以'0.1',会发生什么。一旦你有了,你应该知道如何写下一个循环(提示:如果第一个值是'0.4',那么下一个值只需要从'0.0'循环到'0.6'),然后下一个下一个。如果你遇到困难,你可以发布你的代码和你卡住的地方。 – abarnert 2014-09-30 00:09:46
@abarnert:这是一个在Python中进行分区的实现。唯一的区别是缩放0.1。 – 2014-09-30 00:11:18
@GregHewgill:但是这个问题是所有长度为4的分区,而不是长度为4,没有'0',并且处理'1,1,1,7'和'7,1,1,1'作为同一个分区,所有这些都与这里所需的输出不同。 – abarnert 2014-09-30 00:16:46