2016-09-17 3 views
1

Zu jedem Zeitschritt, ich versuche, ein Element meines list mit der Summe der anderen 2 plus 1. mein Code Dies ist zu ersetzen:Wie kann ich ein Element eines Arrays kontinuierlich ersetzen?

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) 

Dieses eine einzige Zeile gibt mir - ein einmaligen Ersatz. Ich möchte, dass der Code die Ersetzungen auf den neu erhaltenen Arrays jedes Mal durchführt, zum Beispiel:

([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, 12]), ([12, 4, 7], [2, 10, 7], [2, 4, 7]))

Wie kann ich das tun?

+0

Es scheint ein Problem mit dem Einzug zu geben Und wie oft soll der Austausch erfolgen? –

+0

Probieren Sie 3 Mal für jetzt, aber ich möchte es später ändern. – ZE16

+0

so wie es Loops 1. Mal es gibt '([11, 4, 6], [2, 9, 6], [2, 4, 7]) 'für' x, y, z = 2, 4, 6' bzw. das verständlich. Aber wie wollen Sie die neuen 'x, y, z' Werte, wenn Sie zum zweiten Mal eine Schleife machen? –

Antwort

0

Ist dies hilfreich:

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]) 

output:

([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

Ja, das funktioniert für die ersten paar Schritte! Wie kann ich es ändern, um jedes Mal dasselbe (auf den neu erhaltenen Arrays) zu machen? – ZE16

+0

Nun, die Funktion gibt nur 3 Arrays zurück, also egal was, wir können es nur 3 mal iterieren, richtig. –

0

bei jedem Zeitschritt Ersetzen ein Element meiner Array mit der Summe der anderen 2 plus 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) 
Verwandte Themen