列表
一、为什么需要列表
-
变量可以存储一个元素,而列表是一个大的容器,可以存储N多个元素(可以为不同的数据类型),程序可以方便的对这些数据进行整体操作。
-
列表相当于其他语言中的数组
-
列表示意图:
- 程序示意图:
- 内存示意图:
二、列表的创建
1. 列表需要使用中括号[]
,元素之间使用英文的逗号,
进行分隔
2. 列表的创建方式
(1)使用中括号[]
(2)使用内置函数list()
三、列表的特点
1. 列表元素按顺序有序排列
2. 索引映射唯一数据
列表索引可以是正数索引,也可以是负数索引,如下图:
示例:
3. 列表可以存储重复的数据
4. 任意数据类型混存
5. 根据需要,动态分配和回收内存
根据元素多少,动态分配内存空间
四、列表的查询操作
(一)获取列表元素中指定的元素索引
.index
1. 如果所查列表中存在N个相同元素,只返回相同元素中第一个元素的索引
2. 如果查询的元素在列表中不存在,则会抛出ValueEver
3. 可以在指定的start和stop之间进行查找
存在情况:
不存在情况:
(二)获取列表中的单个元素
1. 正向索引从0到N-1(N为元素个数)
2. 逆向索引从-N到-1
3. 指定索引不存在,抛出IndexEver
(三)获取列表中的多个元素
1. 语法格式:列表名[start:stop:step]
2. 切片操作:
(1)切面的结果:原列表片段的拷贝
(2)切片的范围:[start,stop)
(3)step默认为1:可简写为[start:stop]
(4)step为正数:从start开始,往后计算切片
-
[:stop:step]
切面的第一个元素默认是列表的第一个元素
-
[start::step]
切面的最后一个元素默认是列表的最后一个元素
(5)step为负数:从start开始,往前计算切片
-
[:stop:step]
切面的第一个元素默认是列表的最后一个元素
-
[start::step]
切面的最后一个元素默认是列表的第一个元素
(四)判断指定元素在列表中是否存在
元素 in 列表名
元素 not in 列表名
(五)列表元素的遍历
for 迭代变量 in 列表名:
五、列表元素的增、删、改
(一)列表元素的添加
-
append()
在列表的末尾添加一个元素
-
extend()
在列表的末尾至少添加一个元素
首先,如果我们用append()
来添加,可以看到程序是把lst2
作为一个元素添加到列表的末尾,如下:
下面,我们用expend()
来添加:
-
insert()
在列表的任意一个位置添加一个元素
- 切片:在列表任意位置添加至少一个元素
用切片在列表任意位置添加元素,可以理解为在某位置对列表的元素进行替换:
比如下面这幅图,在列表索引为1的位置添加lst2,默认最后一个元素为列表的最后一个元素,也就是把索引为1之后的元素切掉。
可以看到运行结果:hello
之后的元素替换为lst2
我们看下一个例子:
在索引为1到3的位置添加lst2:
(二)列表元素的删除
1. remove()
(1)一次删除一个元素
(2)重复元素只删除第一个
(3)元素不存在抛出ValueError
2. pop()
(1)删除一个指定索引位置上的元素
(2)不指定索引,删除列表中最后一个元素
(3)指定索引不存在抛出ValueError
3. 切片:一次最少删除一个元素
产生新列表:
不产生新列表:
4. clear()
清空列表
5. del
删除列表
(三)列表元素的修改
- 为指定索引的元素赋予一个新值
- 为指定的切片赋予一个新值
六、列表元素的排序
常见的两种方式:
1. 调用sort()
列表中的所有元素默认按照从小到大的顺序进行排序,不会产生新列表。
可以指定reverse=False
,进行升序排序
可以指定reverse=True
,进行降序排序。
2. 调用内置函数sorted()
列表中的所有元素默认按照从小到大的顺序进行排序,会产生新列表。
可以指定reverse=True
,进行降序排序
七、列表生成式
列表生成式简称“生成列表的公式”。
(一)语法格式
例:[i*i for i in range(1,10)]
(二)程序图示
注意:“表示列表元素的表达式”(列表元素真正包含的值)中,通常包含自定义变量
练习:
视频来源:哔哩哔哩马士兵Python教学