Python:与list.remove混淆
问题内容:
我是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")
这样产生:
[5] side before
[5] eva before
[] side after
[] eva after
为什么remove命令也会影响列表的“边”?在不修改列表的情况下,如何使用“ side”的副本?
非常感谢你
编辑:非常感谢您的良好和易于理解的答案!
问题答案:
Python具有“事物”和“事物名称”。当你写
side = [5]
你制造一个新东西[5]
,并给它起名字side
。当你写的时候
eva = side
您为改名side
。作业只是给事物起名字!仍然只有一件事[5]
,有两个不同的名称。
如果您想要新事物,则需要明确要求它。通常您会这样做copy.copy(thing)
,尽管在列表的情况下有特殊的语法thing[:]
。
仅供参考,“事物”通常称为“对象”;“名称”通常称为“引用”。