第六章 列表 [ ] lst
45. 为什么需要列表
(1)变量可以存储有一个元素,而列表是一个“大容器”可以存储N多个元素,程序可以方便地对这些数据进行整体操作
(2)列表相当于其它语言中的数组
(3)列表示意图

46. 列表对象的创建
(1)列表需要使用中括号[],元素之间使用英文逗号进行分隔
(2)列表的创建方式:①使用中括号;②调用内置函数list()
(3)空列表: lst=[] lst=list()
print('---------------------46.列表对象的创建------------------')
'''列表的创建方式:①使用中括号'''
lst=['hello','world',98,'hello']
'''②调用内置函数list()'''
lst2=list(['hello','world',98])
47. 列表的特点
(1)列表元素按顺序有序排序
(2)索引映射唯一个数据
(3)列表可以存储重复数据
(4)任意数据类型混存
(5)根据需要动态分配和回收内存
print('---------------------47.列表的特点------------------')
print(lst[0],lst[-3])
48. 获取指定元素的索引
| index() | 如查列表中存在N个相同元素,只返回相同元素中的第一个元素的索引 |
| 如果查询的元素在列表中不存在,则会抛出ValueError | |
| 还可以指定的start 和 stop 之间进行查找 |
print('---------------------48.获取指定元素的索引------------------')
print(lst.index('hello'))
#print(lst.index('a')) ValueError: 'a' is not in list
#print(lst.index('hello',1,3)) # 1-3 不包括 3 --ValueError: 'hello' is not in list
print(lst.index('hello',1,4)) # 1-4 不包括 4
49. 获取列表中指定的元素(单个元素)
| 获取单个元素 | 正向索引从0 到 N-1 ,e.g lst[0] |
| 逆向索引从-N 到 -1 ,e.g lst[-N] | |
| 指定索引不存在,抛出 IndexError |
print('-------------------49.获取列表中指定的元素------------------')
#获取索引为2的元素
print(lst[2])
print(lst[-3])
50. 获取列表中多个元素—切片操作
(1)语法格式 [start : stop : step ]
(2)切片的结果 —— 原列表的拷贝
(3)切片的范围—— [start,stop) 不包括stop
(4)step默认为 1 —— 简写 [start:stop] [ start : stop: ]
(5)step为正数
① [: stop :step] — 切片的第一个元素默认为列表的第一个元素 — 从start 开始往后计算切片
② [start : :step] — 切片的最后一个元素默认为列表的最后一个元素 — 从start 开始往后计算切片
(6)step 为负数
① [: stop :step] — 切片的第一个元素默认为列表的最后一个元素 — 从start 开始往前计算切片
② [start : :step] — 切片的最后一个元素默认为列表的第一个元素 — 从start 开始往前计算切片
(7)step为负数,省略stop才能得到起点元素,填0是开区间
print('------------------50.获取列表中多个元素——切片操作------------------')
lst3=[10,20,30,40,50,60,70,80]
print(id(lst3))
#strat=1,stop=6,step=1
print(lst3[1:6:1])
print('原列表:',id(lst3))
lst4=lst3[1:6:1]
print('切的片段:',id(lst4))
print(lst3[::],id(lst3[::])) # 切出来为全部片段,但是id变了
51. 列表元素的判断及遍历
(1)判断指定元素在列表中是否存在
①元素 in 列表名
②元素 not in列表名
(2)列表元素的遍历
For 迭代变量 in 列表名 :
print('------------------51.列表元素的判断及遍历------------------')
'''(1)判断指定元素在列表中是否存在'''
print(10 in lst3)
print(100 in lst3)
print(10 not in lst3)
print(100 not in lst3)
'''(2)列表元素的遍历'''
for item in lst3:
print(item, end='\t')
print() # 换行
52. 列表元素的添加操作
| 增加操作 | 方法/其他 | 操作描述 |
| append() | 在列表末尾添加一个元素(一次只能添加一个元素) | |
| extend() | 在列表末尾至少添加一个元素 | |
| insert() | 在列表的任意位置添加一个元素 | |
| 切片 | 在列表的任意位置添加至少一个元素 à 本质是将原列表中切片出来的元素替换掉 |
print('------------------52.列表元素的添加操作------------------')
print('---append 在列表末尾添加一个元素---')
lst=[10,20,30]
print('添加元素之前',lst,id(lst))
lst.append(100)
print('添加元素之后',lst,id(lst)) #添加元素之后 id标识 未变
lis2=['hello','world']
lst.append(lis2)
print(lst)
print('---extend() 在列表末尾至少添加一个元素,每一个元素都单独添加进去---')
lst=[10,20,30]
lst.extend(lis2)
print(lst)
print('---insert 在列表的任意位置添加一个元素---')
lst=[10,20,30]
lst.insert(1,90)
print(lst)
#在任意位置上添加N多个元素
print('------切片操作------')
lst5=[True,False,'hello']
lst=['a','b','c','d','e']
lst[1:]=lst5 #切除替换
print(lst)
lst=['a','b','c','d','e']
lst[0:3:1]=lst5
print(lst)
53. 列表元素的删除操作
| 删除操作 | 方法/其他 | 操作描述 |
| remove () | 一次删除一个元素 | |
| 重复元素只删除第一个 | ||
| 元素不存在,显示 ValueError | ||
|
pop () | 删除一个指定索引位置上的元素 | |
| 指定索引不存在,显示IndexError | ||
| 不指定索引,删除列表中最后一个元素 | ||
| 切片 | 一次至少删除一个元素 à 本质是将原列表中的切片出来的元素提取出来(切出来的列表) à真正删除需要用空列表替换 | |
| clear() | 请空列表 | |
| del | 删除列表 |
print('------------------53.列表元素的删除操作------------------')
lst=[10,20,30,40,50,60,30]
print('--remove---')
lst.remove(30) #一次删除一个元素,重复元素只删除第一个,元素不存在,显示 ValueError
print(lst)
print('---pop---')
lst.pop(0) #删除一个指定索引位置上的元素.指定索引不存在,显示IndexError
print(lst)
lst.pop() #不指定索引,删除列表中最后一个元素
print(lst)
print('---切片操作----')
lst=[10,20,30,40,50,60]
new_list=lst[1:3]
print('原列表',lst)
print('切片后:',new_list) # --> 本质是将原列表中的元素提取出来
'''不产生新的列表对象,而是删除原列表中的内容'''
lst=[10,20,30,40,50,60]
lst[1:3]=[]
print(lst)
'''请空列表'''
lst.clear()
print('请空后',lst)
'''删除列表对象'''
lst=[10,20,30,40,50,60]
del lst[2]
print(lst)
del lst # --> 删除整个列表,列表不复存在,也没法输出。
# print(lst) -->NameError: name 'lst' is not defined
54. 列表元素的修改操作
(1)为指定索引的元素赋予一个新值
(2)为指定的切片赋予一个新值
print('------------------54.列表元素的修改操作------------------')
lst=[10,20,30,40]
''''(1)为指定索引的元素赋予一个新值'''
#一次修改一个值
lst[2]=100
print(lst)
''''(2)为指定的切片赋予一个新值'''
lst[1:3]=[300,400,500,600]
print(lst)
55. 列表元素的排序操作
(1)常见的两种方式:
①调用 sort( )方式,列有中的所有元素默认按照从小到大的顺序进行排序(默认为“升序”),可以指定 reverse =True,进行降序排序。【对原列表操作】
②调用内置函数 sorted(),可以指定 reserver=True,进行降序排序,原列表不发生改变。【将产生一个新的列表对象】
print('------------------54.列表元素的排序操作------------------')
print('------调用 sort( )方式------')
lst=[20,40,10,98,54]
#开始排序,sort() --> 默认升序
print('排序前的列表',lst,id(lst))
lst.sort()
print('排序后的列表',lst,id(lst))
#通过指定关键字参数,将列表中的元素进行降序排序
lst.sort(reverse=True)
print(lst,id(lst))
lst.sort(reverse=False)
print(lst,id(lst))
lst=[20,40,10,98,54]
lst.reverse() # 反转
print(lst)
56. 列表生成式
(1)列表生成式,简称“生成列表的公式”
(2)语法格式:[ i *i for i in range(1,10) ]
(3)注意事项:“表达列表元素的表达式”通常包含自定义变量
print('-----------------57.列表生成式------------------')
lst=[i for i in range(1,10)]
lst2=[i*i for i in range(1,10)]
print(lst,lst2)
'''输出 2 4 6 8 10'''
lst3=[i*2 for i in range(1,6)]
print(lst3)
print('------调用内置函数 sorted()------')
lst=[20,40,10,98,54]
print('1',lst,id(lst))
new_list=sorted(lst)
print('1',new_list,id(new_list))
#指定关键字参数,将列表中的元素进行降序排序
sorted(lst,reverse=True)
print('3',lst)
本文介绍了Python列表的重要性,如何创建列表,以及各种操作,包括获取元素索引、切片操作、元素的添加、删除、修改、排序,还有列表生成式的基本用法。
列表 lst&spm=1001.2101.3001.5002&articleId=115969993&d=1&t=3&u=a4a1085d359647ea823f742edac2dba5)
765

被折叠的 条评论
为什么被折叠?



