python笔试做错的题目
a = [1,2,3]
b = a
print(id(a),id(b),a == b)
print(a,b)
b = b + [1,2,3]
print(a,b)
print(id(a),id(b),a == b)
print("====================================")
a = [1,2,3]
b = a
print(id(a),id(b),a == b)
print(a,b)
b += [1,2,3]
print(a,b)
print(id(a),id(b),a == b)
执行结果:
1939675767304 1939675767304 True [1, 2, 3] [1, 2, 3] [1, 2, 3] [1, 2, 3, 1, 2, 3] 1939675767304 1939676988616 False ==================================== 1939675767368 1939675767368 True [1, 2, 3] [1, 2, 3] [1, 2, 3, 1, 2, 3] [1, 2, 3, 1, 2, 3] 1939675767368 1939675767368 True
我第一个觉得a,b都是同时指向列表[1,2,3],对b修改,a也会同时修改。所以结果应该是
[1,2,3,1,2,3][1,2,3,1,2,3]但是结果确实错误的。
对于操作b = b+ [1,2,3]
先计算b+[1,2,3]然后 b再指向这个结果。所以b的结果会发生改变。
b += [1,2,3]则是改变了b的值,又因为b =a,所以a,b的结果会同时改变。
每天进步一点
浙公网安备 33010602011771号