python容器1-列表
一, 什么是列表
(1)列表:Python中使用list关键字表示
列表中可以存储多个、有顺序的、可以重复的、可以是不同类型的数据!
代码操作案例:
# 1. 列表:存储多个、有顺序的、可以重复的、不同类型的数据
ls1 = ["tom", 18, "male", 10.0, 30]
print(ls1) # 展示列表中所有数据
print(ls1[2]) # 展示下标对应的数据
(2) 列表声明
声明空列表
# 2. 声明空列表
ls1 = [] # 推荐,语法简洁
ls2 = list()
print(ls1, ls2)
声明非空列表
# 声明非空列表
ls3 = ['jams', 'linus'] # 推荐,语法简洁
ls4 = list(['guido', 'danis'])
print(ls3, ls4)
常规情况下(99%+)直接使用lst = []
声明列表即可!
二,列表操作函数
函数 | 描述 |
---|---|
append() | 列表的末尾追加一个数据 |
clear() | 清空列表 |
copy() | 复制列表 |
count() | 查询某个数据出现的次数 |
extend() | 列表末尾追加多个数据 |
index() | 查询指定数据第一次出现的索引位置 |
insert() | 指定索引处插入数据 |
pop() | 默认弹出最后一个数据 |
remove() | 根据列表项删除一个数据 |
reverse() | 翻转列表 |
sort() | 列表数据简单排序 |
增删改查
#增
append 在列表尾部添加新元素
ls.append(11)
insert(序号,数据)插入新元素到指定位置
ls.insert(0,100)
print(ls)
extend 将参数列表中的元素扩充到ls中
ls.extend(ls1)
print(ls)
#删
remove 根据元素的值删除元素
ls.remove(100)
print(ls)
pop 根据序号删除元素,如果序号缺省,默认删除最后一个元素
ls.pop()
print(ls)
clear 清空列表的内容
ls.clear()
print(ls)
#改
ls[4] = 500
#查
print(ls)
负数是从右到左元素序号
print(ls[-3])
排序,逆序,查找,统计次数
#排序
ls.sort()
print(ls)
#逆序
ls.reverse()
print(ls)
#查找 :返回元素的序号,如果元素不存在,抛出异常。
num = ls.index(10)
print(num)
#统计某元素出现次数
num = ls.count(10)
print(num)
浅拷贝与深拷贝
#copy 他是浅拷贝
#列表中的每一个元素本质上 是数据所在的内存地址 而非数据本身
#所以浅拷贝 拷贝出来的 新数组 每一个元素 也是原数组内存地址
ls1 = [1,2,3,[11,22,33]]
ls2 = ls1.copy()
ls1[3][0] = 1000
print(ls1) # [1,2,3,[1000,22,33]]
print(ls2) # [1,2,3,[1000,22,33]]
#深拷贝:从头到尾完整将整个数组复制一份
ls1 = [1,2,3,[11,22,33]]
ls3 = copy.deepcopy(ls1)
ls1[3][0] = 1000
print(ls1)
print(ls3)
#尽量使用浅拷贝,如果修改了数据对副本有影响(影响后续运算),使用深拷贝。
切片技术
# 切片技术
# 所谓切片就是将序列(list,str,tuple)中指定的子序列提取出来
ls = [0,1,2,3,4,5,6,7,8,9]
# -10-9-8-7-6-5-4-3-2-1
ls1 = ls[3:6]
print(ls1)
ls1 = ls[3:6:2]
print(ls1)
# 如果缺省step,step默认值是1
# 当step是 正数 时,缺省的start就是 左端点,缺省的end就是 右端点
# 当step是 负数 时,缺省的start就是 右端点,缺省的end就是 左端点
# 简而言之 step为正时 从左到右切 为负时 从右往左切