列表


列表是一个有序,可变序列。列表元素的数据类型可以不同,可以基本类型,组合数据类型或自定义数据类型。列表的所有元素放在一对方括号’[]‘中,相邻元素之间用逗号分隔开。

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.列表运算符

列表运算符‘+’和‘*’也可以实现增加列表元素的目的,这两个运算符不属于原地操作,而是返回新列表哦。‘+’用于组合列表,‘*’用于重复列表