列表
- 变量可以存储一个元素,而列表是一个“容器”,可以存储N个元素的引用,并且这N个元素可以是不同的数据类型
- 列表示意图:
列表的两种创建方式
列表有两种创建方式,①使用中括号[],②使用内置函数list()
- 使用中括号[],元素之间使用英文逗号进行分隔
lst1 = ['hello', 'python', 98]
- 使用内置函数list()
lst2 = list(['hello', 'python', 98])
列表的特点
- 列表元素按顺序有序排序
- 索引映射唯一一个数据
- 列表可以存储重复数据
- 任意数据类型混存
- 根据需要动态分配和回收内存(不用担心元素太多存不下)
列表的查询操作
1、用index()获取列表中指定元素的索引
- 如查列表中存在N个相同元素,只返回相同元素中的第一个元素的索引
- 如果查询的元素在列表中不存在,则会抛出ValueError
- 还可以在指定的start和stop之间进行查找 eg:
print(lst.index('Hello', 1, 3)) #从[1,3)之间寻找lst第一个Hello的索引
2、通过索引获取列表中的单个元素
- 正向索引从0到N-1 eg:lst[0]
- 逆向索引从-N到-1 eg:lst[-N]
- 指定的索引不存在,抛出indexError
3、通过切片获取列表中的多个元素
- 语法格式:列表名[start : stop : step]
- 切片的结果:原列表片段的拷贝,即产生一个新的列表对象
- 切片的范围:[start, stop)
- step默认为1:简写为[start:stop]
- step为正数:[ : stop : step]表示切片的第一个元素默认为列表的第一个元素,从start开始往后计算切片;[start : : step]表示切片的最后一个元素默认为列表的最后一个元素,从start开始往后计算切片
- step为负数:[ : stop : step]表示切片的第一个元素默认为列表的第一个元素,从start开始往前计算切片;[start : : step]表示切片的最后一个元素默认为列表的最后一个元素,从start开始往前计算切片。eg:[6 : 0 : -1]
列表的判存和遍历
- 列表的判存用in和not in
- 列表的遍历用for-in循环:for 迭代遍历 in 列表名 :
列表元素的添加操作
方法/其他 | 操作描述 |
---|---|
append() | 在列表的末尾添加一个元素 |
extend() | 在列表的末尾添加至少一个元素 |
insert(index, item) | 在列表的任意位置添加一个元素 |
切片 | 在列表的任意位置添加至少一个元素(个人觉得其实更像替换) |
lst = ['Hello', 'Python', '98', '97']
lst.append(['Hello', 'World'])
print(lst) #['Hello', 'Python', '98', '97', ['Hello', 'World']]
lst = ['Hello', 'Python', '98', '97']
lst.extend(['Hello','World'])
print(lst) #['Hello', 'Python', '98', '97', 'Hello', 'World']
lst = ['Hello', 'Python', '98', '97']
lst.insert(2, 90)
print(lst) #['Hello', 'Python', 90, '98', '97']
lst = ['Hello', 'Python', '98', '97']
lst3 = ['!', 'True']
lst[1:] = lst3
print(lst) #['Hello', 'Python', '!', 'True']
列表元素的删除操作
方法/其他 | 操作描述 |
---|---|
remove(item) | 一次删除一个元素;重复元素只删除一个;元素不存在抛出ValueError |
pop(index) | 删除一个指定索引位置上的元素;指定索引不存在抛出IndexError;不指定索引则删除列表中的最后一个元素 |
切片 | 一次删除至少一个元素(实际上是用一个空列表替换要删除的元素) |
clear() | 清空列表 |
del | 删除列表 |
利用切片的删除操作:
#切片操作会产生一个新的列表对象
lst = list[10, 40, 50, 60]
new_lst = lst[1:3]
print('原列表:',lst) #原列表:[10, 40, 50, 60]
print('切片后的列表:'new_lst) #切片后的列表:[40, 50]
#不产生新的列表对象,而是删除原列表中的内容
lst[1:3] = []
print(lst) #[10, 60]
列表元素的修改操作
- 为指定索引的元素赋予一个新值: lst[index] = item
- 为指定的切片赋予一个新值: lst[start: stop] = item
列表元素的排序操作
常见的两种排序方式
- 调用sort()方法,列表中的所有元素默认按照从小到大的顺序进行排序,可以指定reverse=True,进行降序排序。sort()排序是在原列表上进行的。
- 调用内置函数sorted(),可以指定reverse=True,进行降序排序。原列表不发生改变,而是产生一个新的列表对象。
lst = [10,20,50,40]
print(lst,id(lst)) #[10,20,50,40],1632705897408
lst.sort()
print(lst,(id(lst))) #[10,20,40,50],1632705897408
lst = [10,20,50,40]
new_lst = sorted(lst)
print(lst) #[10,20,50,40]
print(new_lst) # [10,20,40,50]
列表生成式
列表生成式就是生成列表的一个公式
- 语法:[表示列表元素的表达式 for 自定义变量 in 可迭代对象]
- 注意事项:“表示列表元素的表达式”中通常包含自定义变量
lst = [i*i for i in range(1,10)]
print(lst) #[1,4,9,16,25,36,49,64,81]