我是Python的新手,对于这个可能很简单的问题感到抱歉.(虽然,我现在花了2个小时才找到答案)
我简化了我的代码来说明问题:
side=[5]
eva=side
print(str(side) + " side before")
print(str(eva) + " eva before")
eva.remove(5)
print(str(side) + " side after")
print(str(eva) + " eva after")
Run Code Online (Sandbox Code Playgroud)
这会产生:
[5] side before
[5] eva before
[] side after
[] eva after
Run Code Online (Sandbox Code Playgroud)
为什么remove命令也会影响列表'side'?如果不修改列表,我该怎么做才能使用'side'的副本?
非常感谢你
编辑:非常感谢您提供的好的和易于理解的答案!
Kat*_*iel 13
Python有"东西"和"事物名称".当你写作
side = [5]
Run Code Online (Sandbox Code Playgroud)
你做了一件新事物[5],并给它起了名字side.然后当你写
eva = side
Run Code Online (Sandbox Code Playgroud)
你为它命名了side.作业只是给事物命名!仍然只有一件事[5],有两个不同的名字.
如果你想要一件新东西,你需要明确地要求它.通常你会这样做copy.copy(thing),虽然在列表的情况下有特殊的语法thing[:].
FYI"事物"通常被称为"物体"; "名称"通常称为"引用".
dus*_*san 11
eva并side参考相同的清单.
如果您想拥有该列表的副本:
eva = side[:]
Run Code Online (Sandbox Code Playgroud)
您可以在本文中阅读有关复制列表的更多信息:Python:以正确的方式复制列表
编辑:这不是复制列表的唯一方法.请参阅本答案第一条评论中发布的链接.
| 归档时间: |
|
| 查看次数: |
1091 次 |
| 最近记录: |