列表list作为容器类型:主要的作用管理数据,管理数据的方式包含增加数据、删除数据、修改数据、查询数据
C的数据无法动态的扩容
python可以随时的扩容
ls = [10,3,5,6,7,4,1,2]
一、列表list中都包含了哪些操作函数
1、增 有三种
第①种: append 在列表尾部添加新元素
ls.append(11)
print(ls)
第②种:insert(序号,数据)插入新元素到指定位置
ls.insert(0,100)
print(ls)
第③种:extend 将参数列表中的元素扩充到ls中
ls1 = [1,2,2]
ls.extend(ls1)
print(ls)
2、 删 有三种
第①种:remove 根据元素的值删除元素
ls.remove(10)
print(ls)
第②种:pop 根据序号删除元素,如果序号缺省,默认删除最后一个元素
ls.pop()
print(ls)
第③种:clear 清空列表的内容
ls.clear()
print(ls)
3、 改
ls[4] = 500
print(ls)
4、查
print(ls[1])
负数是从右到左元素序号
print(ls[-3])
5、 排序(从小到大排序)
ls.sort()
print(ls)
逆序(不分大小从右边开始依次往前排)按序排需先执行ls.sort()
ls.reverse()
print(ls)
6、查找 :返回元素的序号,如果元素不存在,抛出异常。
num = ls.index(5)
print(num)
7、 统计某元素出现次数num = ls.count(10) print(num)
8、第①种:
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) # [1,2,3,[1000,22,33]]
print(ls3) # [1,2,3,[11,22,33]]
尽量使用浅拷贝,如果修改了数据对副本有影响(影响后续运算),使用深拷贝。
二、切片技术
所谓切片就是将序列(list,str,tuple)中指定的子序列提取出来
ls = [0,1,2,3,4,5,6,7,8,9]
[-10,-9,-8,-7,-6,-5,-4,-3,-2,-1] tuple 负数时序号
ls1 = ls[3:6]
ls1 = ls[3:6:2]
print(ls1)
如果缺省step,step默认值是1
当step是 正数 时,缺省的start就是 左端点,缺省的end就是 右端点
当step是 负数 时,缺省的start就是 右端点,缺省的end就是 左端点
简而言之 step为正时 从左到右切 为负时 从右往左切
ls1 = ls[::-1]
print(ls1)
ls1 = ls[:3:-1]
print(ls1)
ls1 = ls[-2:3:-1]
print(ls1)
ls1 = ls[3:][:3]
print(ls1)