Python列表

1. 列表的基本操作索引操作 

2. 列表的删除操作

   通过索引删除

li=['a','b','c','d']
del li[1]
# li =['a', 'c', 'd']

 

   通过切片删除

li=['a','b','c','d']
del li[0:2]
# li =[ 'c', 'd']

 

3. 列表的修改操作

 

 

4. 列表的拷贝操作

 4.1 浅拷贝

 a, 基本变量赋值改变现象

a=1  # id =140724292251904
b=a  # id =140724292251904
b=2  # id =140724292251936
print(a) # 1
print(b) # 2
# 结论: a没有随着b的改变而改变是因为,b重新赋值后内存地址发生了改变,和a已经不一样了

 

b, 列表赋值改变现象

a=[1,2,3]  # id =2376364675656
b=a        # id =2376364675656
b[0]=0     # id =2376364675656
print(a) # [0, 2, 3]
print(b) # [0, 2, 3]
# 结论: a随着b的改变而改变,因为它们的内存地址始终都是一样没有发生改变,改变的只是列表里面的数据

 

c, 使用copy,但是列表里面的元素都是基本数据,里面没有包含子列表

a=[1,2,3]    # id =2387467260488
b=a.copy()   # id =2387467261000
b[0]=0       # id =2387467261000
print(a) # [1, 2, 3]
print(b) # [0, 2, 3]
# 结论: a没有随着b的改变而改变,因为使用copy函数,得到的新列表的内存地址已经发生了改变

 

d, 使用copy,但是列表里面的元素都是基本数据,里面包含子列表

a=[[0,1],2,3]   # a[0] id=2263629451848
b=a.copy()      # b[0] id=2263629451848
b[0][0]=23

print(a) # [[23, 1], 2, 3]
print(b) # [[23, 1], 2, 3]
# 结论: a随着b的改变而改变, 因为使用copy函数,但是copy得来的新列表里面的子列表和原有的子列表里面的id内存没有发生改变过

 

 

 

 4.2 深拷贝

from  copy import  deepcopy

a=[[0,1],2,3]   # a[0] id=2262619870344
b=deepcopy(a)   # b[0] id=2262620586696
b[0][0]=23

print(a) # [[0, 1], 2, 3]
print(b) # [[23, 1], 2, 3]
# 结论: 使用深拷贝后,得来的新列表里面的子列表和原有的列表里面的子列表的id内存已经发生了改变

 

 

 

 

 

count, clear, copy, append ,extend,index,remove,pop,reverse 

posted @ 2020-08-28 21:31  leungqingyun  阅读(45)  评论(0编辑  收藏  举报