关于python列表中的赋值问题
网易的一道面试题
a = [1, 2, 3]
b = a
b = [n+1 for n in a]
print(a, b)
b = [n-1 for n in a]
print(a, b)
问两次a和b的值
[2, 3, 4]、[2, 3, 4]
[2, 3, 4]、[1, 2, 3]
为什么?
是因为对b[:]赋值时跟对b赋值时是不一样的
b[:]相当于一次修改b[0]~b[-1]里的内容
b和a是同一个对象,所以a会变
而当b=[2, 3, 4]时,是直接把[2, 3, 4]赋值给对象b,这时,a和b在两个不同的内存地址中
以上。