2016-09-17 74 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) 
相關問題