列表list常用操作
序列是Python中最基本的数据结构,它支持字符,数字,字符串甚至可以包含列表(即嵌套)
列表用 [ ] 标识,是 python 最通用的复合数据类型。
列表中值的切片也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始
列表的特征
a. 列表元素可包含任意类型的对象:数值、字符串、列表、元组等
b. 通过下标索引访问序列中的值
c. 可随意变换列表长度,相当于随意指定新的列表
d. 可嵌套,即列表中的元素包含列表
e. 可改变某一位置元素的值
列表与生成器
range()是生成器,指向了一个左闭右开的范围,比如说:
range(5)代表指向了0,1,2,3,4这几个值
range(2,5)代表指向了2,3,4这几个值
另外,这里也是有步长的概念,如下:
range(0,10,2)代表指向了0,2,4,6,8这几个值,最后的2代表步长
可变列表list常用操作
【添加元素】
.append()方法:
可添加元素,括号中无论数据类型是什么,它都仅仅充当这个列表的一个元素
.extend()方法:
用新列表扩展原来的列表,即把括号中的列表元素一一放入这个列表中
这里需要注意.append()方法 和 .extend()方法 的区别
【删除元素】
.remove()方法:
移除列表中某个值的第一个匹配项
.clear()方法:
移除所有值,变成一个空列表
del语句:
删除list的相应索引值
【插入元素】
.insert(i,m)方法:
在索引i处插入m,这里索引i代表第i+1个值,更改的是数据源,并不是生成新的数据
【复制】
.copy()方法:
复制一个新的列表,新列表不指向原列表(虽然两个列表值相同)
这里为什么要需要一个复制的操作呢?难道不可以直接用赋值'='直接给新列表赋予旧列表的值吗?因为如果用'=',新列表是指向旧列表的,倘若旧列表改变了,新列表也会随之改变。看下面的代码比较一下吧
【排序】
.sort()方法:
括号中可写参数reverse,不填默认为reverse=False,默认时为升序排序/字母顺序
.sorted()方法:
排序并复制,括号中的参数reverse也是和上面一样的
另外,讲一讲元组Tuple
之前讲过,元组相当于不可变的“列表”,所以数据源是不能更改的,不能索引删除,只能用del语句整个元组删除;另外,索引和切片的操作和列表是一样的。
序列通用函数:
len()、连接(+)、重复(*)、max()、min()
tuple()函数:
将列表转换为元组
练习:
① 现有一个列表name = ['小明', '小红'] ,增加“小刚”的名字上去
② 创建一个range,用print输出其值,以及数据类型
③ m=range(10),请问m[2],m[-1],m[5]是多少
④ x.append('abc')和x.extend('abc')的区别
⑤ m=[4,5,6,73,4,4,4,4,2],删除2,删除所有的4
领取专属 10元无门槛券
私享最新 技术干货