Python中防止函数修改原始列表的切片传参技巧

Dylan
Dylan
发布时间:2026-10-13| 1人浏览过
原创

本文介绍如何在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中禁止函数修改列表的实现方法的全部内容已分享完毕,希望能为读者提供参考,并欢迎大家继续支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。