Python列表删除项,即使未明确告知
因此,我在从列表中删除元素时遇到了一个非常不寻常的问题,我用一种更小、更容易理解的格式重新创建了这个问题。基本上,从一个列表中删除一个项目将从一个不同的列表中删除相同的项目,您以前将该列表设置为主循环之外的原始列表Python列表删除项,即使未明确告知,python,list,Python,List,因此,我在从列表中删除元素时遇到了一个非常不寻常的问题,我用一种更小、更容易理解的格式重新创建了这个问题。基本上,从一个列表中删除一个项目将从一个不同的列表中删除相同的项目,您以前将该列表设置为主循环之外的原始列表 a = [1,2,3,4] b = a while True: print("a:", a) print("b:", b) c = int(input("delete")) del(a[c]) print("a:", a) print
a = [1,2,3,4]
b = a
while True:
print("a:", a)
print("b:", b)
c = int(input("delete"))
del(a[c])
print("a:", a)
print("b:", b)
break
这将返回:
a: [1, 2, 3, 4]
b: [1, 2, 3, 4]
delete2 #the "2" is my input
a: [1, 2, 4]
b: [1, 2, 4]
>>>
我研究并看到了一些关于浅拷贝/深拷贝的东西,但我不太确定,如果有人能进一步阐明这一点,那将是非常好的这是因为
a
和b
是同一列表的名称(或者更正式地说,是对同一对象的引用)
要为新列表创建名称,请复制该列表:
b = list(a)
# or
b = a[:]
这将创建一个包含完全相同成员的新列表,称为浅层副本
深度复制是指递归地复制整个结构,但这里似乎不需要它。“看到了一些关于浅层/深度复制的东西”-并且两个都没有使用。可能重复“…但我不太确定,如果有人能透露更多信息,那就太好了”,如果我打扰了你,很抱歉,但感谢链接。如果有人真的给出了一个他所做的工作的例子,表明他费心去试着理解,我想我会花两分钟来解释。目前重复目标不是很好,但我确信有好的重复目标。非常感谢你的回答,我会调查重复目标