gpt4 book ai didi

python - 如何在 python 列表中使用切片运算符避免 for 循环中的副作用?

转载 作者:太空宇宙 更新时间:2023-11-04 08:01:02 25 4
gpt4 key购买 nike

这是从链接中引用的:http://www.python-course.eu/for_loop.php -为避免这些副作用,最好使用切片运算符处理副本,如下例所示:

colours = ["red"]
for i in colours[:]:
if i == "red":
colours += ["black"]
if i == "black":
colours += ["white"]
print colours

输出是:

['red', 'black']

我的问题是:语句 colours[:] 是否复制了颜色列表并且 for 循环在副本而不是原始列表上工作?如果是这样,那么 ["balck"] 是如何附加到原始颜色列表的?

最佳答案

语句 colours[:] 是否复制颜色列表:是。

并且 for 循环适用于副本而不是原始列表?是的,但请注意“适用于”的含义。变量 i 从列表 colours 的副本中获取其值。但是,对 colours 的引用(例如 colours += ["black"] 行中的引用)指的是原始列表。这正是代码想要的,所以它可以工作。

如果是这样,那么 ["balck"] 是如何附加到原始颜色列表的? 这是因为执行附加操作的行是指原始列表而不是副本列表。

关于python - 如何在 python 列表中使用切片运算符避免 for 循环中的副作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40191387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com