马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
>>> old = [1,2,3,4,5] 
>>> new = old 
>>> old = [6] 
>>> print(new) 
[1, 2, 3, 4, 5] 
 
 
 
>>> old = [5,4,3,2,1] 
>>> new = old 
>>> old.sort() 
>>> print(new) 
[1, 2, 3, 4, 5] 
 
 
为什么这两个同样是先new=old,然后改变old的值,第一个new不跟着old变化,第二个却变化了?
第一个程序 
- >>> old = [1,2,3,4,5] # old指向[1,2,3,4,5]
 
 - >>> new = old  # new和old都指向[1,2,3,4,5]
 
 - >>> old = [6] # old改变指向,此时old指向[6],但是new已经指向[1,2,3,4,5]
 
 - >>> print(new) # 打印new,值为[1,2,3,4,5]
 
 - [1, 2, 3, 4, 5]
 
  复制代码 
第二个程序
 - >>> old = [5,4,3,2,1] # old指向[5,4,3,2,1]
 
 - >>> new = old   # new和old都指向[5,4,3,2,1]
 
 - >>> old.sort()  # 将old指向的值进行排序,sort()默认从小到大,而且是永久排序。经过排序后,new和old指向的值变为了[1,2,3,4,5),只是值变了,内存地址没有改变
 
 - >>> print(new)  # 打印new,显示新的值为[1,2,3,4,5]
 
 - [1, 2, 3, 4, 5]
 
  复制代码 
另外补充一点,使用id来看内存是否发生变化
 - >>> a = [1,2,3,4,5]
 
 - >>> id(a)
 
 - 1995969006792
 
 - >>> a.sort()
 
 - >>> id(a)    # 经过排序,内存未发生变化,也就是指向未变化
 
 - 1995969006792
 
 - >>> 
 
  复制代码 
好好理解下,应该能懂,加油!  
 
 
 |