arr = []
for i in range(10):
c = chr(ord('a') + i)
arr.append({i : c})
arr为:
[{0: 'a'}, {1: 'b'}, {2: 'c'}, {3: 'd'}, {4: 'e'}, {5: 'f'}, {6: 'g'}, {7: 'h'}, {8: 'i'}, {9: 'j'}]
接下来,创建一个新的列表brr,令brr=arr
brr = arr
brr为:
[{0: 'a'}, {1: 'b'}, {2: 'c'}, {3: 'd'}, {4: 'e'}, {5: 'f'}, {6: 'g'}, {7: 'h'}, {8: 'i'}, {9: 'j'}]
接下来,修改brr的第0个元素:
brr[0] = {10:"h"}
那么,问题来了,此时,arr和brr分别是多少呢? arr为:
[{10: 'h'}, {1: 'b'}, {2: 'c'}, {3: 'd'}, {4: 'e'}, {5: 'f'}, {6: 'g'}, {7: 'h'}, {8: 'i'}, {9: 'j'}]
brr为:
[{10: 'h'}, {1: 'b'}, {2: 'c'}, {3: 'd'}, {4: 'e'}, {5: 'f'}, {6: 'g'}, {7: 'h'}, {8: 'i'}, {9: 'j'}]
看到这里,是不是有人会有疑问,为什么arr的第0个元素也被改变了呢?这是因为:arr和brr是同一个对象。
flag = arr is brr
flag为True,说明arr和brr是同一个对象。还可以通过打印出二者的id来查看二者是否是同一个对象。
print(id(arr))
print(id(brr))
会发现这个值是相同的。