Day5
一、容器2——列表list
由一系列变量组成的可变序列容器
擅长存储一个类型的数据,即竖着存。
1、列表的创建
(1)语法1:列表名=[元素1,元素2]
list_name = ["抄录们","房间大哭","照耀"]
(2)语法2:列表名=list(可迭代对象)
此方法也可称之为类型转换
list01 = list("孙悟空") # ['孙', '悟', '空']
2、元素添加
(1)追加:列表名.append(元素)
在列表后追加
list_name.append("sea")
(2)插入:列表名.insert(索引,元素)
在列表索引处添加
list_name.insert(0,"萨芬")
(3)内存图比较
3、索引定位
(1)读取 变量 = 列表名[索引号]
name = list_name[0]
(2)修改 列表名[索引号] = “XXX”
list_name[-1] = "滔滔"
(3)切片 列表名[开始:结束:间隔]
print(list_name[:-2]) # 切片读取
list_name[-2:] = ["老谷","老赵"] # 切片修改
4、遍历
(1)正序遍历
- for 变量 in 容器:
for i in list_name:
print(i)
- for 索引 in range():
for i in range(len(list_name)):
print(list_name)
(2)倒序遍历
- for 索引 in range() ********重要!!!!!!
for i in range(len(list_name)-1,-1,-1):
print(list_name[i])
- 切片
这种方法会创建新容器,占内存,不推荐使用!
for i in list_name[::-1]:
print(i)
5、删除
(1)根据元素:列表名.remove(元素)
list_name.remove(12) # 如果元素不在会报错
(2)根据位置:del 列表名[索引/切片]
del list_name[0]
del list_name[:] # 删除全部元素
(3)内存图比较
————————————————————————
二、深浅拷贝
拷贝:数据备份,防止一份数据意外改变
浅拷贝:备份第一层数据
优点:占用内存较少
缺点:没有办法保障深层数据不被修改
深拷贝:备份所有数据
优点:绝对互不影响
缺点:占用内存过多
适用性:
优先使用浅拷贝
当深层数据有可能被修改时,使用深拷贝
1、浅拷贝内存图
复制过程中,只复制第一层,第一层数据2份,深层数据1份
2份数据,互不影响
1份数据,互相影响
2、深拷贝内存图
复制全部层,所有数据2份