有这么几行代码:
list2=list1
list2.remove(index1)
if index1 in list1:
print "index1 is in list1"
实际运行后发现, "index1 is in list1"不会被打印,这说明操作list2等于操作list1。很明显,list2=list1相当于把list2指向了list1,list1和list2指向的是同一块内存。顺带复习下python的同一性运算符:
x==y:代表x和y的值相等。例如:
x=1
y=1
x==y的值为True
x is y:代表x和y指向的是同一个对象。例如:
x=1
y=1
x is y的值为False
x=y
x is y的值为True
x == y的值也为True
如果需要对list进行复制,则可以利用list1=list2[:]。”:“在list中代表范围,1:3代表第1个到第3个;只有一个”:“则代表list中的所有元素。所以list1=list2[:]相当于对list2的元素挨个赋值给list1,也就实现了list的复制。回到开始的例子:
list2=list1[:]
list2.remove(index1)
>>index1 in list1
True