Python中防止函数修改原始列表的切片传参技巧
本文介绍如何在Python中防止函数意外修改原始列表。通过向函数传递列表的切片副本(如list[:])而非原件,确保所有修改仅作用于副本。结合魔术师名单示例,展示如何保留原始数据同时生成处理后的新列表,适用于需要同时保留原始记录与生成结果的场景。
在某些开发场景中,必须确保函数不会修改传入的列表。例如,当需要对裂变数据进行修改操作时,同时还需要保留原始的未打印设计列表以备查阅。解决这一问题的有效方法是向函数传递列表的副本,而不是原始列表原件;这样,函数内部进行的任何修改都只会影响副本,而原始列表将保持原样不受影响。
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
以上关于Python中禁止函数修改列表的实现方法的全部内容已分享完毕,希望能为读者提供参考,并欢迎大家继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









