关于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在两个不同的内存地址中

以上。

posted @ 2020-08-08 14:22  蒜泥迪奥  阅读(235)  评论(0编辑  收藏  举报