有時候,需要禁止函數修改列表。例如要對裂變進行修改操作,也要保留原來的未列印的設計列表,以供備案。為解決這個問題,可向函數傳遞列表的副本而不是原件;這樣函數所做的任何修改都隻影響副本,而絲毫不影響原件。 8-9 魔術師 魔術師 :創建一個包含魔術師名字的列表,並將其傳遞給一個名為show_magic ...
有時候,需要禁止函數修改列表。例如要對裂變進行修改操作,也要保留原來的未列印的設計列表,以供備案。為解決這個問題,可向函數傳遞列表的副本而不是原件;這樣函數所做的任何修改都隻影響副本,而絲毫不影響原件。
function_name(list_name[:])
8-9 魔術師 魔術師 :創建一個包含魔術師名字的列表,並將其傳遞給一個名為show_magicians() 的函數,這個函數列印列表中每個魔術師的名字。 8-10 了不起的魔術師 了不起的魔術師 :在你為完成練習
8-9編寫一個名為make_great() 的函數,對魔術師列表進行修改,在每個魔術師的名字中都加入字樣“the Great”。調用函數show_magicians() ,確認魔術師列表確實變了。
8-11 不變的魔術師 不變的魔術師 :修改你為完成練習8-10而編寫的程式,在調用函數make_great() 時,向它傳遞魔術師列表的副本。由於不想修改原始列表,請返回修改後的 列表,並將其存儲到另一個列表中。分別使用這兩個列表來調用show_magicians() ,確認一個列表包含的是原來的魔術師名字,而另一個列表包含的是添加了字 樣“the Great”的魔術師名字。
def make_great(magicians,new_magicians): #對列表修改的函數 while magicians: current_magician = magicians.pop() #刪除原列表中的元素 current_magician = "The Great " + current_magician new_magicians.append(current_magician) def show_magicians(new_magicians): for magician in new_magicians: #便利所有的magicians中的元素 print(magician) magicians = ['fake','ppd','moon'] new_magicians = [] make_great(magicians[:],new_magicians)#調用函數make_great 傳遞magicians[]副表magicians[:] show_magicians(new_magicians)#輸出新表 show_magicians(magicians)#輸入原表
執行結果:
The Great moon
The Great ppd
The Great fake
fake
ppd
moon