python中把列表名赋给变量,相当于让变量指向列表,而不是复制一个列表。你之所以认为b is a不应该成立,是因为你以为是下面的情况:
但实际是这样的:
自然 a is b是成立的
为了避免第二种情况,可以改写为
b=a.copy()
is比较两个条件:1.内容相同。2.内存中地址相同b=a,地址相同。你可以print(a)的内容看看,a也被改变了
数组赋值,b=a时他们是共享同一片存储空间的,当对b改变,a也会改变。用b=list(a)或b=a[:]就可以避免这种情况。