day-3 切片&深拷贝浅拷贝区别

 1 # 切片 通过下标取值的,都可以用切片
 2 li = ['xiaoming','xiaowang','xiaoli','xiaozhang','xiaohei']
 3 
 4 li2 = li#浅拷贝,内存地址一样
 5 print("li的内存地址是:%s" % id(li))#查看内存地址
 6 print("li2的内存地址是:%s" % id(li2))
 7 
 8 li3 = li[:]#深拷贝,内存地址不一样
 9 print("li3的内存地址是:%s" % id(li3))
10 
11 li4 = li[0:5:2]#2是步长 
12 print('li4是%s' % li4)


 

C:\ProgramData\Anaconda3\python.exe E:/cnz/day2/day3/切片.py
li的内存地址是:30171656
li2的内存地址是:30171656
li3的内存地址是:30171720
li4是['xiaoming', 'xiaoli', 'xiaohei']

Process finished with exit code 0

 

 1 li = ['xiaoming', 'xiaowang', 'xiaoli', 'xiaozhang', 'xiaohei']
 2 # 浅拷贝,内存地址一样
 3 li2 = li
 4 # 深拷贝,内存地址不一样
 5 li3 = li[:]
 6 print("li的内存地址是:%s" % id(li))
 7 print("li2的内存地址是:%s" % id(li2))
 8 print("li3的内存地址是%s" % id(li3))
 9 # 修改li,浅拷贝li2会跟着改变,因为内存地址一样,深拷贝li3不会改变,以为内存地址不一样
10 li.append('AA')
11 print("li是%s" % li)
12 print("li2是%s" % li2) # li2也会改变
13 print("li3是%s" % li3) # li3不会改变
C:\Users\admin\Miniconda3\python.exe E:/python/切片.py
li的内存地址是:23160352
li2的内存地址是:23160352
li3的内存地址是23161832
li是['xiaoming', 'xiaowang', 'xiaoli', 'xiaozhang', 'xiaohei', 'AA']
li2是['xiaoming', 'xiaowang', 'xiaoli', 'xiaozhang', 'xiaohei', 'AA']
li3是['xiaoming', 'xiaowang', 'xiaoli', 'xiaozhang', 'xiaohei']

Process finished with exit code 0

 

posted @ 2019-10-27 11:29  维特布朗尼  阅读(247)  评论(0)    收藏  举报