列表
列表是一个有序,可变序列。列表元素的数据类型可以不同,可以基本类型,组合数据类型或自定义数据类型。列表的所有元素放在一对方括号’[]‘中,相邻元素之间用逗号分隔开。
1.列表的创建
(1)直接赋值
使用等号直接俄将一个列表赋值给变量即可创建一个列表。例如:
scores = [78,83,67,89,75]
empty=[]#创建一个空列表
(2)使用list函数创建
使用list函数可以将字符串,元组,字典,集合等数据类型的数据转换成列表。
summer = list('summer')
print(summer)#['s', 'u', 'm', 'm', 'e', 'r']
2.访问列表元素
使用索引可以直接访问列表元素,格式为:列表名[索引]。如果指定的索引不存在,将出现下标越界错误。
scores = [78,83,67,89,75]
socres[2]#注意正向索引从0开始
socres[5]#索引5越界,抛出异常
如果一个列表中的元素也是列表,那就构成了嵌套列表,也叫多维列表。嵌套列表元素也是通过索引来访问的,其格式为:
students=[['001','李明','男'],['001','李明','男']]
students[1][1]# 用2个索引访问二位列表的元素
3.列表切片
切片的功能非常强大,是python序列的重要操作之一。列表切片操作可以截取列表中的任意部分,得到一个新列表。切片操作的语法格式如下:
列表名[开始索引:结束索引:步长]
numbers = [1,2,3,4,5,6,7,8]
numbers[2:6:2]#步长为二
numbers[2:6]#步长为1,结果不包括索引为6的元素
print(numbers[:6])#[1, 2, 3, 4, 5, 6]
print(numbers[2:])#[3, 4, 5, 6, 7, 8]
可以通过给切片赋值的方式添加,删除和修改列表元素。
numbers = [1,2,3,4,5,6,7,8]
print(numbers[1:1])#[]
numbers[1:1]=[2,3,4]#在列表中插入元素
print(numbers)#[1, 2, 3, 4, 2, 3, 4, 5, 6, 7, 8]
numbers[11:]=[6]#在列表尾部添加元素(替换最后一个元素)
print(numbers)#[1, 2, 3, 4, 2, 3, 4, 5, 6, 7, 6]
4.修改列表元素
列表可以通过指定索引,对相应元素进行赋值修改
numbers = [1,2,3,4,5,6,7,8]
numbers[2]='80890798'
5添加列表元素
添加和删除列表元素是很常用的操作,可以使用appen(),extend()和insert()方法实现
(1)append方法
append()方法用于在列表末尾追加一个元素。方法的调用格式:
对象名. 方法名(参数列表 )
numbers = [1,2,3,4,5,6,7,8]
numbers.append('nvsaonv')
(2)insert()方法
insert()方法用于在列表任意位置插入一个元素。
numbers = [1,2,3,4,5,6,7,8]
numbers.insert(3,'nvsaonv')
print(numbers)#[1, 2, 3, 'nvsaonv', 4, 5, 6, 7, 8]
(3)extend()方法
extend()方法用于将另一个列表中的所有元素追加到当前列表的末尾。
numbers = [1,2,3,4,5,6,7,8]
numbers.extend([3,'nvsaonv'])
print(numbers)#[1, 2, 3, 4, 5, 6, 7, 8, 3, 'nvsaonv']
6.删除列表元素
删除列表元素可以使用del命令,也可以使用pop(),remove()和clear()方法
(1)del命令
del命令可以删除列表中固定位置的元素或整个列表,例如:
numbers = [1,2,3,4,5,6,7,8]
del numbers[2]#删除索引为2的列表元素
del numbers#删除整个列表
(2)pop()方法
pop()方法用于删除列表指定的一个元素(默认为最后一个),并返回该元素。
numbers = [1,2,3,4,5,6,7,8]
numbers.pop()#默认删除列表最后一个元素
numbers.pop(0)#删除索引为0的列表元素
(3)remove()方法
remove()方法用于删除列表第一个与指定值相等。如果列表中有多个与指定值相等的元素,要多次使用remove()。
numbers = [1,2,3,4,5,6,7,8]
numbers.remove(3)#删除第一个值为3的列表元素
(4)clear()方法
clear()方法用于清空列表。例如:
numbers = [1,2,3,4,5,6,7,8]
numbers.clear()#删除列表所有元素
注意:clear()方法是清空列表元素,剩下空列表,而del命令会将列表变量删除,不能再访问。
在列表的中间位置插入或删除元素时,会影响该位置后面所有元素的索引,应尽量避免此类操作。
7.检索列表元素
index()方法用于返回指定元素在列表中首次出现的索引,若该元素不在列表中则抛出异常。
numbers = [1,2,3,4,5,6,7,8]
numbers.index(3)#返回列表元素3首次出现的索引
numbers.index(10)# 数字10不是列表元素,抛出异常
8.统计列表元素
count()方法用于计算指定元素在列表中出现的次数。
numbers = [1,2,3,4,5,6,7,8,1,2]
numbers.count(3)#统计数字1在列表中出现的次数
9.列表元素排序
(1)sort()方法
sort()方法用于按照指定的规则对列表元素进行排序,默认的规则是比较元素的大小,按升序排序。
sort()方法有两个可选参数:key和reverse。通过设置参数key的值,可以实现以字符串大小,长度等关键字进行排序。通过设置参数reverse的值为True,可以实现降序排序。
numbers = [1,2,3,4,5,6,7,8,1,2]
numbers.sort()#默认情况下,按升序排序
(2)reverse()方法
reverse()方法用于将列表所有元素逆序排列。
numbers = [1,2,3,4,5,6,7,8,1,2]
numbers. reverse()#[2, 1, 8, 7, 6, 5, 4, 3, 2, 1]
注意:sort()和reverse()方法都是原地对列表进行排序,不生成新序列。如果不希望修改原列表,而是生成一个排序后的新列表,可以使用sorted()和reversed()函数实现。
10.列表常用函数
列表常用的函数有len(),max(),min(),sorted()和reversed(),函数的引用格式为:函数名(列表名)
(1)len()
numbers = [1,2,3,4,5,6,7,8,1,2]
len(numbers)
(2)max()和min()
max()和min()函数用于返回列表中所有元素的最大值或最小值。列表元素全部为数值类型时,直接根据数值的大小比较;列表元素是全部为字符串类型时,按字符的ASCII码一次进行比较;如果列表元素既有数字类型又有字符串类型时,则无法比较,抛出异常。
numbers = [1,2,3,4,5,6,7,8,1,2]
max(numbers)#返回所有数值元素的最大值
min(numbers)#返回所有数值元素的最小值
(3)sum()
sum()函数用于对数值型列表元素进行求和,如果存在非数值型元素,则抛出异常。
numbers = [1,2,3,4,5,6,7,8,1,2]
sum(numbers)
11.列表推导式
列表推导式也称为列表解析式,其代码简介,可读性更强,且运行速度快。利用列表推导式可以简单高效地处理一个可迭代对象,生成满足特定需求地列表
列表推到是的语法格式如下:
[ 表达式 for 变量 in 序列 [if 条件表达式]]
其中表达式可以是任何运算表达式,变量是序列中遍历的元素值吗,if条件表达式可以省略。该语句的功能是计算每个变量对应的表达式的值,生成一个新列表。
列表推导式在逻辑上相当于一个循环,只是形式更加简洁。
列表推导式由:实现嵌套列表的平铺:
list1=[[1,2,3],[4,5,6],[7,8,9]]
b = [i for a in list1 for i in a]
print(b)#[1, 2, 3, 4, 5, 6, 7, 8, 9]
过滤不符合条件的元素
在列表推导式中,可以使用if条件表达式进行筛选,旨在结果列表中保留符合条件的元素
list1=[3,-6,7,9,10,-21,-5,3.14,0,0.0]
b = [i for i in list1 if i<=0]# 筛选出小于等于0的元素
c = [i for i in range(20) if i%2==0]
12.列表运算符
列表运算符‘+’和‘*’也可以实现增加列表元素的目的,这两个运算符不属于原地操作,而是返回新列表哦。‘+’用于组合列表,‘*’用于重复列表