目录
- 变量可以存储一个元素,而列表可以存储 N 多个元素,程序可以方便地对这些数据进行整体操作
- 列表相当于其它语言中的数组,不同的是列表可以存储不同类型的数据
一、列表的创建与删除
1.1 列表的创建
-
使用中括号[]
- 调用内置函数list()
lst1=['hello','hi',88]
print(type(list1))
print(list1)
lst2=list(['hello','hi',88])
print(type(list2))
print(list2)
运行结果
二、列表的查询操作
2.1 获取列表中指定元素的索引
列表名.index(x)
- 若列表中存在 N 个相同元素,只返回相同元素中第一个元素的索引
- 还可以在指定的 start 和 stop 之间进行查找:.index(x,start,stop) 其中 stop 可省略
- 若查询的指定元素在列表中不存在,则抛出 ValueError
注意:索引号从0开始(列表中的第一个元素索引号为0)
lst=['hello','hi','hey','hi',33]
print(lst.index('hi'))
print(lst.index('hi',2))
运行结果
2.2 获取列表中的单个元素
列表名[n]
- 列表的两种索引方式
- 正向索引:从 0 到 N-1
- 逆向索引:从 -N 到 -1
- 若查询的指定索引在列表中不存在,则抛出 IndexError
lst=['hello','hi','hey','hi',33]
print(lst[2])
print(lst[-3])
运行结果
2.3 获取列表中的多个元素
列表名[start:stop:step]
切片操作
- 切片的结果:原列表片段的拷贝
- 切片的范围:[ start , stop )
- step 默认为1:简写为 [start:stop]
- step 为正数:从 start 开始往后计算切片
- [:stop:step]:切片的第一个元素默认是列表的第一个元素
- [start::step]:切片的最后一个元素默认是列表的最后一个元素
- step 为负数:从 start 开始往前计算切片
- [:stop:step]:切片的第一个元素默认是列表的最后一个元素
- [start::step]:切片的最后一个元素默认是列表的第一个元素
lst=['a1','a2','a3','a4','a5','a6','a7','a8','a9']
print('原列表:',lst)
print('lst[::]',lst[::])
print('lst[2:8]',lst[1:8])
# step为正数
print('lst[:7:2]',lst[:7:2])
print('lst[2::2]',lst[2::2])
# step为负数
print('lst[:2:-3]',lst[:2:-3])
print('lst[7::-2]',lst[7::-2])
运行结果
2.4 列表元素的判断
元素 in 列表名
元素 not in 列表名
2.5 列表元素的遍历
for 迭代变量 in 列表名:
循环体
lst=['a1','a2','a3']
for i in lst:
print(i)
运行结果
三、列表元素的增、删、改操作
3.1 列表元素的增加
-
append():在列表的末尾添加一个元素
-
extend():在列表的末尾添加至少一个元素
lst=['a1','a2','a3']
print('添加元素之前:',lst,id(lst))
lst.append(100)
print('末尾添加1个元素:',lst,id(lst))
lst1=['hi','hello']
lst.append(lst1)
print('末尾添加1个元素:',lst,id(lst))
lst.extend(lst1)
print('末尾添加多个元素:',lst,id(lst))
运行结果
-
insert():在列表的任意位置添加一个元素
-
切片:在列表的任意位置添加至少一个元素
lst=['a1','a2','a3','a4']
print('插入元素之前:',lst,id(lst))
lst.insert(2,100)
print('插入1个元素:',lst,id(lst))
lst=['a1','a2','a3','a4']
print('插入元素之前:',lst,id(lst))
lst1=[True,'abandon']
lst[1::]=lst1
print('切片插入多个元素:',lst,id(lst))
lst=['a1','a2','a3','a4']
print('插入元素之前:',lst,id(lst))
lst[0::2]=lst1
print('切片插入多个元素:',lst,id(lst))
运行结果
3.2 列表元素的删除
- remove()
- 一次删除一个元素
- 重复元素只删除第一个
- 若元素不存在抛出ValueError
lst=[10,20,30,40,40,50,60,70,80]
print(lst)
lst.remove(20)
print(lst)
lst.remove(40)
print(lst)
运行结果
- pop()
- 删除一个指定索引位置上的元素
- 若不指定索引则删除列表最后一个元素
- 若指定索引不存在抛出IndexError
lst=[10,20,30,40,40,50,60,70,80]
print(lst)
lst.pop(1)
print(lst)
lst.pop()
print(lst)
运行结果
- 切片
- 一次至少删除一个元素
'''方式1:产生一个新的列表对象'''
lst=[10,20,30,40,40,50,60,70,80]
print('原列表',lst,id(lst))
lst1=lst[1:4]
print('切片后的列表',lst1,id(lst1))
'''方式2:删除原列表内容,不产生新列表对象'''
lst=[10,20,30,40,40,50,60,70,80]
print('原列表',lst,id(lst))
lst[1:5]=[]
print('切片后的列表',lst,id(lst))
运行结果
- clear()
- 清空列表
- del
- 删除列表
lst=[10,20,30,40,40,50,60,70,80]
print('原列表:',lst)
lst.clear()
print('清空后的列表:',lst)
lst=[10,20,30,40,40,50,60,70,80]
print('原列表:',lst)
del lst
print(lst)
运行结果
3.3 列表元素的修改
lst=[10,20,30,40,50]
print(lst)
# 一次修改一个值
lst[3]='A'
print(lst)
# 一次修改多个值
lst[1:3]=['a','b','c']
print(lst)
运行结果
四、列表元素的排序
- .sort()
- 调用sort()方法,列表中所有元素默认按照从大到小的顺序进行排序,也可以指定reverse=True,降序排序;reverse=False,升序排序。
- 原列表改变,不新建列表
lst=[10,33,9,100,64]
print('排序前的列表:',lst,id(lst))
lst.sort()
print('默认排序后的列表:',lst,id(lst))
lst.sort(reverse=True)
print('降序排序后的列表:',lst,id(lst))
运行结果
- sorted()
- 调用内置函数sorted(),列表中所有元素默认按照从大到小的顺序进行排序,也可以指定reverse=True,降序排序;reverse=False,升序排序。
- 原列表顺序不变,新建排序后的列表
lst=[10,33,9,100,64]
print('排序前的列表:',lst,id(lst))
new_lst=sorted(lst)
print('默认排序后的列表:',new_lst,id(new_lst))
new_lst1=sorted(lst,reverse=True)
print('降序排序后的列表:',new_lst1,id(new_lst1))
运行结果
五、列表生成式
即生成列表的公式
[ 列表元素的表达式 for 自定义变量 in range(n,m) ]
- 注意:“列表元素的表达式”中通常包含自定义变量
lst=[ i*i for i in range(1,10)]
print(lst)
运行结果
Flag:我要成为一个日更选手:)