2016-09-17 52 views
1

在每个时间步,我想与其他2加1的总和,以取代我list一个元素这是我的代码:我怎样才能不断更换数组的元素?

def replace(x, y, z): 

    for i in range(3): 

     rep_x = [y+z+1, y, z] 
     rep_y = [x, x+z+1, z] 
     rep_z = [x, y, x+y+1] 

     ini_x = rep_x 
     ini_y = rep_y 
     ini_z = rep_z 

    return ini_x, ini_y, ini_z 


print replace(2, 4, 6) 

这给了我一条线 - 一次性替代。我希望代码每次都在新获得的阵列上继续进行替换,例如:

([11,4,6],[2,9,6],[2,4,7] )([11,4,6],[11,18,6],[11,4,16]),([19,9,6],[2,9,6],[2,9,10,11,12,13] 12],([12,4,7],[2,10,7],[2,4,7]))

我该怎么做?

+0

似乎有一个问题与indentat离子,以及您想要更换的次数? –

+0

现在尝试3次,但我可能想稍后更改它。 – ZE16

+0

,因此它第一次循环时给出'([11,4,6],[2,9,6],[2,4,7])''x',y,z = 2,4,6'分别可以理解。但是当它第二次循环时,你想要新的'x,y,z'值是什么? –

回答

0

取代我数组的一个元素这是有帮助的:

def replace(x, y, z): 
    ini_x = [y+z+1, y, z] 
    ini_y = [x, x+z+1, z] 
    ini_z = [x, y, x+y+1] 
    return ini_x, ini_y, ini_z 


s = replace(2, 4, 6) 
print s 
for i in s: 
    print replace(i[0], i[1], i[2]) 

输出:

([11, 4, 6], [2, 9, 6], [2, 4, 7]) 
([11, 4, 6], [11, 18, 6], [11, 4, 16]) 
([16, 9, 6], [2, 9, 6], [2, 9, 12]) 
([12, 4, 7], [2, 10, 7], [2, 4, 7]) 
+0

是的,这适用于前几个步骤!我如何修改它以保持每次都在做同样的事情(在新获得的阵列上)? – ZE16

+0

好吧,函数只返回3个数组,所以无论如何,我们只能迭代3次,正确。 –

0

在每个时间步骤,与其他2总和加上1

from __future__ import print_function 
def business(array): # Can't give a proper name without knowing what the function does 
    total = sum(array) 
    return [total + 1 - x for x in array] 

arr = [2,4,6] 
steps = 10 
print(arr) 
for step in range(steps): 
    arr = business(arr) 
    print(arr) 
相关问题