标题:禁止函数修改列表
向函数传递列表的问题:
有时候,需要禁止函数修改列表。例如,你需要保留原来的列表,以供备案。
为了解决这个问题,可向函数传递列表的副本而不是原件,这样函数所做的任何修改都只影响副本,而丝毫不影响原件。
要将类表的副本传递给函数,可以进行如下操作:
function_name(list_name[ : ]
下面是实例:
题目:
创建一个包含魔术师名字的列表,并将其传给show+magicians()的函数,这个函数打印列表中的所有魔术师名字;
编写一个make_great()函数,对魔术师列表进行修改,对每个魔术师的名字中都加入字样“the Great”,调用函数show_magicians(),确认魔术师列表确实变了;
在调用函数make_great()时,向它传递魔术师列表的副本,由于不想修改原始列表,请返回修改后的列表,并将其存储在另一个列表中,分别使用这两个列表来调用 show_magicians(),确认一个列表包含的是原来的魔术师名字,而另一个列表包含的是添加了字样"The Great"的魔术师名字。
实例代码:
def show_magicians(new_magicians): #打印函数
"""显示打印好的元素"""
print("\nThe following : ")
for magician in new_magicians: #遍历列表
print(magician.title())
def make_great(magicians,new_magicians): #对列表修改的函数
while magicians:
current_magician = magicians.pop() #删除原列表中的元素
current_magician = "The Great " + current_magician
new_magicians.append(current_magician)
magicians = ['tom','jack','marry'] #创建魔术师列表
new_magicians = [] #用于保存修改后的列表元素
make_great(magicians[:],new_magicians) #传递列表副本
show_magicians(new_magicians) #调用show_magician()函数
show_magicians(magicians)
运行结果:这里写代码片
The following :
The Great Marry
The Great Jack
The Great Tom
The following :
Tom
Jack
Marry
--- Thank you!---