- 定义:列表是 Python 中最常用的数据结构之一,它是一种有序的可变数据类型,可以存储任意类型的数据,如整数、字符串、列表、字典等。
- 创建方式
- 直接赋值:使用方括号
[]将元素括起来,元素之间用逗号分隔,如my_list = [1, 2, 3, 'a', 'b']。
- 使用
list()函数:可以将可迭代对象(如字符串、元组等)转换为列表,例如my_list = list('abc')会得到['a', 'b', 'c'],my_tuple = (1, 2, 3),my_list = list(my_tuple)会得到[1, 2, 3]。
- 访问元素:通过索引来访问列表中的元素,索引从 0 开始。例如
my_list = [10, 20, 30],my_list[0]返回10,my_list[2]返回30。还可以使用负数索引,my_list[-1]表示最后一个元素,即30,my_list[-2]表示倒数第二个元素,即20。
- 修改元素:可以通过索引直接修改列表中的元素。如
my_list = [1, 2, 3],my_list[1] = 4,此时my_list变为[1, 4, 3]。
- 添加元素
append()方法:在列表末尾添加一个元素。例如my_list = [1, 2, 3],my_list.append(4),my_list变为[1, 2, 3, 4]。
extend()方法:用于将一个可迭代对象中的所有元素添加到列表中。例如my_list = [1, 2, 3],my_list.extend([4, 5, 6]),my_list变为[1, 2, 3, 4, 5, 6]。
insert()方法:在指定索引位置插入一个元素。my_list = [1, 2, 3],my_list.insert(1, 4),my_list变为[1, 4, 2, 3]。
- 删除元素
del语句:通过索引删除元素。例如my_list = [1, 2, 3],del my_list[1],my_list变为[1, 3]。
remove()方法:根据元素值删除元素。my_list = [1, 2, 3, 2],my_list.remove(2),会删除第一个值为 2 的元素,my_list变为[1, 3, 2]。
pop()方法:删除并返回指定索引位置的元素,默认删除最后一个元素。my_list = [1, 2, 3],my_list.pop()返回3,my_list变为[1, 2];my_list.pop(0)返回1,my_list变为[2]。
count()方法:用于统计列表中某个元素出现的次数。例如my_list = [1, 2, 2, 3, 3, 3],my_list.count(3)返回3。
index()方法:返回列表中第一个匹配元素的索引。my_list = ['a', 'b', 'c', 'b'],my_list.index('b')返回1。
reverse()方法:反转列表中的元素顺序。my_list = [1, 2, 3],my_list.reverse(),my_list变为[3, 2, 1]。
sort()方法:对列表进行排序。默认是升序排列,my_list = [3, 1, 2],my_list.sort(),my_list变为[1, 2, 3]。也可以通过传递参数reverse=True进行降序排列,my_list.sort(reverse=True),my_list变为[3, 2, 1]。
- 列表切片用于获取列表的一部分元素,语法为
list[start:stop:step],其中start是起始索引(包含),stop是结束索引(不包含),step是步长。
- 例如
my_list = [1, 2, 3, 4, 5, 6],my_list[1:4]返回[2, 3, 4],my_list[::2]返回[1, 3, 5],my_list[::-1]返回[6, 5, 4, 3, 2, 1],即反转列表。
- 列表中可以包含其他列表,形成嵌套列表。例如
my_list = [[1, 2], [3, 4], [5, 6]],可以通过双重索引来访问嵌套列表中的元素,my_list[1][0]返回3。
- 浅拷贝:使用
list.copy()方法或切片[:]可以实现浅拷贝。浅拷贝只复制了列表本身,而列表中的元素如果是可变对象,仍然是共享的。例如list1 = [1, [2, 3], 4],list2 = list1.copy(),修改list2[1][0] = 5,list1也会变为[1, [5, 3], 4]。
- 深拷贝:需要使用
copy模块中的deepcopy()函数。import copy,list1 = [1, [2, 3], 4],list2 = copy.deepcopy(list1),此时修改list2中的元素不会影响list1。