python基础语法(二)列表
- 前言
- 一、列表的创建与删除
- 二、列表的查询操作
- 1. 获取列表中指定元素的索引
- 2. 获取列表中的单个元素
- 3. 获取列表中的多个元素
- 4. 列表元素的查询操作
- 三、列表元素的增、删、改操作
- 1. 列表元素的增加操作
- 2. 列表元素的删除操作
- 3. 列表元素的修改操作
- 四、列表元素的排序
- 五、列表生成式
前言
- 变量可以存储一个元素,列表是一个大容器,可以存储N多个元素,方便对这些数据进行整体操作
- 相当于其他语言中的数组
- 变量存储的是一个对象的引用id
一、列表的创建与删除
列表需要使用中括号[],元素之间使用英文的逗号进行分隔
lst = [‘a’,‘b’]
列表的创建方式:
- 使用中括号 lst = [‘a’,‘b’]
- 调用内置函数lst() lst2 = lst([‘a’,‘b’])
列表的特点:
- 列表元素按顺序有序排序
- 索引映射唯一个数据
- 列表可以存储重复数据
- 任意数据类型混存
- 根据需要动态分配和回收内存
列表索引顺序(7个元素为例):
从前往后:0~6
从后往前:-7~-1(采用负数)
即lst[0]与lst[-7]是同一个元素
二、列表的查询操作
1. 获取列表中指定元素的索引
index():
- 如果查列表中存在N个相同元素,只返回相同元素中第一个元素的索引
- 如果查询的元素在列表中不存在,则会抛出ValueError
- 还可以在指定的start和stop之间进行查找
2. 获取列表中的单个元素
- 正向索引从0到N-1
- 逆向索引从-N到-1
- 指定索引不存,抛出IndexError
代码如下(示例):
lst = ['hello', 'world', 'hello']
print(lst.index('hello'))
# 输出结果 0
print(lst.index('hello', 1, 4))
# 输出结果 2
print(lst.index('hello', 0, 4))
# 输出结果 0
3. 获取列表中的多个元素
列表名[start:stop:step]:
- 切片的结果:原列表片段的拷贝
- 切片的范围:[start, stop)
- step默认为1:简写为[start:stop]
step为正数(从start开始往后计算切片):
- [:stop:step]切片的第一个元素默认是列表的第一个元素
- [start::step]切片的最后一个元素默认是列表的最后一个元素
step为负数(从start开始往前计算切片):
- [:stop:step]切片的第一个元素默认是列表的最后一个元素
- [start::step]切片的最后一个元素默认是列表的第一个元素
代码如下(示例):
lst = [10,20,30,40,50,60,70,80]
print(lst[1:6:1])
# 输出结果 20,30,40,50,60
print(lst[1:6:2])
# 输出结果 20,40,60
print(lst[:6:2])
# 输出结果 10,30,50
print(lst[1::2])
# 输出结果 20,40,60,80
print(lst[::-1])
# 输出结果 80,70,60,50,40,30,20,10
print(lst[6:0:-2])
# 输出结果 70,50,30
4. 列表元素的查询操作
判断指定元素在列表中是否存在:
- 元素 in 列表名
- 元素 not in 列表名
列表元素的遍历:
- for 迭代变量 in 列表名 :
操作
三、列表元素的增、删、改操作
1. 列表元素的增加操作
列表元素的增加操作:
- append():在列表的末尾添加一个元素
- extend():在列表的末尾至少添加一个元素
- insert():在列表的任意位置添加一个元素
- 切片:在列表的任意位置添加至少一个元素
lst = [10,20,30]
lst.append(100)
print(lst)
# 输出结果 [10, 20, 30, 100]
lst2 = ['hello', 'world']
lst.extend(lst2)
print(lst)
# 输出结果 [10, 20, 30, 'hello', 'world']
lst.insert(1, 90)
print(lst)
# 输出结果 [10, 90, 20, 30]
lst3 = [True, False, 'hello']
lst[1:] = lst3
print(lst)
# 输出结果 [10, True, False, 'hello']
# 10后面直接被切掉替换成lst3
2. 列表元素的删除操作
列表元素的删除操作:
- remove():一次删除一个元素;重复元素只删除第一个;元素不存在抛出ValueError
- pop():删除一个指定索引位置上的元素;指定索引不存在抛出IndexError;不指定索引,删除列表中最后一个元素
- 切片:一次至少删除一个元素
- clear():清空列表,删除列表中的元素
- del:删除列表,不是删除列表元素,是删除列表!
lst = [10, 20, 30, 40, 50, 60, 30]
lst.remove(30)
print(lst)
# 输出结果 [10, 20, 40, 50, 60, 30]
lst.pop(1)
print(lst)
# 输出结果 [10, 30, 40, 50, 60, 30]
lst.pop()
print(lst)
# 输出结果 [10, 20, 30, 40, 50, 60]
# 不写索引,默认删除最后一个元素
new_lst = lst[1:3]
print('原列表', lst)
print('切片列表', new_lst)
# 输出结果
# 原列表 [10, 20, 30, 40, 50, 60, 30]
# 切片列表 [20, 30]
lst = [10, 20, 30, 40, 50, 60, 30]
lst[1:3] = []
print('切片列表', lst)
# 输出结果
# 切片列表 [10, 40, 50, 60, 30]
# 不产生新的列表对象,删除原列表中的内容
lst.clear()
print(lst)
# []
del lst
print(lst)
# 输出结果 NameError: name 'lst' is not defined
# 列表被删除,不是列表元素被删除,是列表被删除!
3. 列表元素的修改操作
列表元素的修改操作:
- 为指定索引的元素赋予一个新值
- 为指定的切片赋予一个新值
指定索引:
lst = [10, 20, 30, 40, 50, 60, 30]
lst[2] = 100
print(lst)
# 输出结果 [10, 20, 100, 40, 50, 60, 30]
指定切片:
lst = [10, 20, 30, 40]
lst[1:3] = [300, 400, 500, 600]
print(lst)
# 输出结果 [10, 300, 400, 500, 600, 40]
四、列表元素的排序
列表元素的排序操作:
- 调用sort()方法,列表中的所有元素默认按照从小到大的顺序进行排序,可以指定括号里面reverse = True,进行降序排序
- 调用内置函数sorted(),可以指定reverse = True,进行降序排序,原列表不发生改变
调用sort():
lst = [20, 40, 10, 98, 54]
lst.sort()
print(lst)
# 输出结果 [10, 20, 40, 54, 98]
lst.sort(reverse=True)
print(lst)
# 输出结果 [98, 54, 40, 20, 10]
lst.sort(reverse=False)
print(lst)
# 输出结果 [10, 20, 40, 54, 98]
调用内置函数sorted():
lst = [20, 40, 10, 98, 54]
new_lst = sorted(lst)
print(lst)
print(new_lst)
# 输出结果 [20, 40, 10, 98, 54]
# 输出结果 [10, 20, 40, 54, 98]
new_lst1 = sorted(lst, reverse=True)
print(lst)
print(new_lst1)
# 输出结果 [98, 54, 40, 20, 10]
五、列表生成式
语法格式:
- [i*i for i in range(1, 10)]
- i*i 表示列表元素的表达式
- i 自定义变量
- range(1, 10)可迭代对象
代码示例:
lst = [i for i in range(1, 10)]
print(lst)
# 输出结果 [1, 2, 3, 4, 5, 6, 7, 8, 9]
lst = [i*2 for i in range(1, 10, 2)]
print(lst)
# 输出结果 [2, 6, 10, 14, 18]