Ich versuche, eine Kopie einer Liste an eine Funktion in Python zu übergeben, damit ich auf eine neue Liste pop und anhängen kann, ohne die Informationen in der alten Liste zu verlieren. Aber ich habe Probleme.Kopie einer Liste an eine Funktion in Python übergeben
hier ist mein Code
def show_magicians(magicians):
for magician in magicians:
print (magician.title())
return magicians
def make_great(magicians):
for magician in magicians:
new_magician = magicians.pop()
new_magicians.append(new_magician)
print (new_magician.title() + ", is a great magician!!")
return magicians
new_magicians = []
magicians = ['merlin', 'blaine', 'agaybi', 'copperfield']
show_magicians(magicians)
make_great(magicians[:])
print ('\n' , magicians)
print ('\n' , new_magicians)
Die zweite Funktion soll die Elemente aus der alten Liste der neuen und drucken Sie die einfache Erklärung für jeden ohne Entleerung der alten Liste verschieben. Das Problem ist, ich bekomme nur 1 Element gedruckt und das gleiche Element ist das einzige Element verschoben.
Was mache ich falsch?
Sie ordnen die neue Liste, die von 'make_great' erstellt wurde, nicht zu, versuchen Sie' new_magicians = make_great (magicians [:]) ''. – jonrsharpe
@RobertR Nein, das ist nicht das Problem - das OP * übergibt explizit eine flache Kopie mit der Slice-Notation '[:]'. Das Problem ist, dass das nichts mit 'new_magicians' zu tun hat! – jonrsharpe
Danke für den Schnitt Jon Sharpe. Das ist meine erste Frage. –