Python Lists详解!
嗨,你好啊,我是猿java
这篇文章,我们将详细的分析 Python Lists(列表)。
什么是 Python Lists?
Python Lists(列表)就像其他语言中的动态大小数组(例如 Java 中的 ArrayList)。简单来说,列表是一组用方括号 [ ]
包围并用逗号分隔的东西的集合。
列表是一种序列数据类型,用于存储数据的集合。元组和字符串是其他类型的序列数据类型。
这里我们使用 []
创建一个 Python 列表。
1 | my_list = ["Hello", "World", "Python"] |
输出:
1 | ["Hello", "World", "Python"] |
列表是 Python 语言中最简单的容器之一。列表不一定总是同质的,这使得它成为 Python 中最强大的工具。单个列表可以包含整数、字符串以及对象等数据类型。列表是可变的,因此它们可以在创建后进行修改。
如何创建列表?
在 Python 中,可以通过将序列放在方括号 []
内来创建列表。与集合不同,列表不需要内置函数来创建。
注意:与集合不同,列表可以包含可变元素。
创建列表的复杂度
- 时间复杂度:O(1)
- 空间复杂度:O(n)
下面通过几个示例来展示 Python是如何创建列表的。
示例1: 在 Python 中创建列表
1 | # Python 程序演示列表的创建 |
输出:
1 | 空列表: |
示例1: 创建包含多个不同或重复元素的列表
列表可以包含具有不同位置的重复值,因此在创建列表时可以传递多个不同或重复的值。
1 | # 创建一个包含重复值的数字列表 |
输出:
1 | 使用数字创建的列表: |
如何访问列表元素?
Python 使用索引运算符 []
来访问列表中的项,索引必须是整数。嵌套列表可以使用嵌套索引进行访问。
示例 1:从列表中访问元素
1 | # Python 程序演示从列表中访问元素 |
输出:
1 | 从列表中访问元素 |
示例 2:从多维列表中访问元素
1 | # 创建一个多维列表(通过在列表中嵌套列表) |
输出:
1 | 从多维列表中访问元素 |
负索引
在 Python 中,负序列索引表示从列表末尾的位置。无需计算偏移量(如 List[len(List)-3]
),只需写 List[-3]
即可。负索引表示从末尾开始,-1 表示最后一项,-2 表示倒数第二项,等等。
1 | List = [1, 2, 'Hello', 4, 'For', 6, 'World'] |
输出:
1 | 使用负索引访问元素 |
负索引访问列表元素的复杂度
- 时间复杂度:O(1)
- 空间复杂度:O(1)
如何获取列表的大小?
使用 len()
函数获取列表的长度。
1 | # 创建一个列表 |
输出:
1 | 0 |
如何向列表中添加元素?
使用 append()
**
可以使用内置的 append()
函数向列表添加元素。一次只能添加一个元素,若要使用 append()
方法添加多个元素,需要使用循环。元组也可以使用 append()
方法添加到列表中,因为元组是不可变的。与集合不同,可以使用 append()
方法将列表添加到现有列表中。
1 | # Python 程序演示向列表中添加元素 |
输出:
1 | 初始空列表: |
append()
方法复杂度
- 时间复杂度:O(1)
- 空间复杂度:O(1)
使用 insert()
append()
方法仅适用于在列表末尾添加元素,若要在指定位置添加元素,则使用 insert()
方法。与 append()
只需一个参数不同,insert()
方法需要两个参数(位置和值)。
1 | # Python 程序演示向列表中添加元素 |
输出:
1 | 初始列表: |
insert()
方法复杂度
- 时间复杂度:O(n)
- 空间复杂度:O(1)
使用 extend()
除了 append()
和 insert()
方法外,还有一种添加元素的方法,即 extend()
,该方法用于一次在列表末尾添加多个元素。
注意:append()
和 extend()
方法只能在列表末尾添加元素。
1 | # Python 程序演示向列表中添加元素 |
输出:
1 | 初始列表: |
extend()
方法复杂度
- 时间复杂度:O(n)
- 空间复杂度:O(1)
反转列表
使用 reverse()
1 | # 反转列表 |
输出:
1 | ['Python', 5, 4, 3, 2, 1] |
使用 reversed()
reversed()
函数返回一个反向迭代器,可以使用 list()
函数将其转换为列表。
1 | my_list = [1, 2, 3, 4, 5] |
输出:
1 | [5, 4, 3, 2, 1] |
从列表中删除元素
使用 remove()
可以使用内置的 remove()
函数从列表中删除元素,但如果元素不存在则会引发错误。remove()
方法一次只能删除一个元素,要删除一系列元素,则使用迭代器。remove()
方法删除指定的项。
注意:列表中的 remove()
方法只会删除第一个匹配的元素。
示例 1:
1 | # Python 程序演示从列表中删除元素 |
输出:
1 | 初始列表: |
示例 2:
1 | # 创建一个列表 |
输出:
1 | 删除一系列元素后的列表: |
remove()
方法复杂度
- 时间复杂度:O(n)
- 空间复杂度:O(1)
使用 pop()
pop()
函数也可以用于从列表中删除并返回元素,但默认情况下它只删除列表的最后一个元素。要从列表的特定位置删除元素,需要将元素的索引作为参数传递给 pop()
方法。
1 | List = [1, 2, 3, 4, 5] |
输出:
1 | 弹出元素后的列表: |
pop()
方法复杂度
- 时间复杂度:O(1)/O(n)(删除最后一个元素为 O(1),删除第一个和中间元素为 O(n))
- 空间复杂度:O(1)
切片列表
我们可以使用切片获取子字符串和子列表。在 Python 列表中,有多种方法可以打印包含所有元素的整个列表,但要打印特定范围内的元素,我们使用切片操作。
切片操作在列表上使用冒号 :
进行。
要打印从开始到指定范围的元素,请使用:
1 | [: Index] |
要打印从开始到负范围的元素,请使用:
1 | [:-Index] |
要打印从指定索引到末尾的元素,请使用:
1 | [Index:] |
要打印从指定负索引到末尾的元素,请使用:
1 | [-Index:] |
要以逆序打印整个列表,请使用:
1 | [::-1] |
注意:要从列表末尾打印元素,请使用负索引。
1 | # Python 程序演示从列表中删除元素 |
输出:
1 | 初始列表: |
负索引列表切片
1 | # 创建一个列表 |
输出:
1 | 初始列表: |
列表推导式
Python 列表推导式用于从其他可迭代对象(如元组、字符串、数组、列表等)创建新列表。列表推导式包括括号内的表达式,该表达式对每个元素执行,并结合 for
循环迭代每个元素。
语法:
1 | newList = [ 表达式(元素) for 元素 in 旧列表 if 条件 ] |
示例:
1 | # Python 程序演示列表推导式 |
输出:
1 | [1, 9, 25, 49, 81] |
为了更好地理解,上面的代码等同于以下代码:
1 | # 为了理解,上述生成等同于 |
输出:
1 | [1, 9, 25, 49, 81] |
列表方法
函数 | 描述 |
---|---|
append() |
在列表末尾添加一个元素 |
extend() |
将一个列表的所有元素添加到另一个列表 |
insert() |
在指定索引处插入一个元素 |
remove() |
从列表中删除一个元素 |
clear() |
移除列表中的所有元素 |
index() |
返回第一个匹配项的索引 |
count() |
返回作为参数传递的项的数量 |
sort() |
按升序排序列表中的项 |
reverse() |
反转列表中项的顺序 |
copy() |
返回列表的副本 |
pop() |
移除并返回指定索引处的项。如果没有提供索引,则移除并返回最后一项 |
要了解更多信息,请参阅这篇文章 – Python 列表方法。上述操作会修改列表本身。
列表的内置函数
函数 | 描述 |
---|---|
reduce() |
将传递给它的特定函数应用于列表的所有元素,存储中间结果并只返回最终的汇总值 |
sum() |
对列表中的数字求和 |
ord() |
返回给定 Unicode 字符的 Unicode 代码点的整数表示 |
cmp() |
如果第一个列表“比”第二个列表“更大”,则返回 1 |
max() |
返回给定列表的最大元素 |
min() |
返回给定列表的最小元素 |
all() |
如果所有元素为真或列表为空,则返回 true |
any() |
如果列表中的任何元素为真,则返回 true。如果列表为空,则返回 false |
len() |
返回列表的长度或大小 |
enumerate() |
返回列表的枚举对象 |
accumulate() |
将传递给它的特定函数应用于列表的所有元素,返回包含中间结果的列表 |
filter() |
测试列表的每个元素是否为真 |
map() |
将给定函数应用于给定可迭代对象的每个项后返回结果列表 |
lambda() |
该函数可以有任意数量的参数,但只有一个表达式,该表达式被计算并返回 |
常见问题
在 Python 中列表的用途是什么?
列表用于在 Python 中存储项目集合,例如数字、字符串或其他对象。它们常用于:
- 存储和操作数据序列。
- 聚合项目以进行迭代。
- 将多个项目收集为单个变量。
- 数据操作和分析。
如何创建 Python 列表?
使用方括号 []
并用逗号分隔项目来创建列表。
1 | my_list = [1, 2, 3, 'apple', 'banana'] |
如何在 Python 中调用列表?
通过引用其变量名来调用(访问)列表,并可以使用索引位置访问元素。
1 | my_list = [1, 2, 3, 'apple', 'banana'] |
如何声明列表?
通过将项目封装在方括号中并赋值给变量来声明列表。
1 | empty_list = [] |
如何读取 Python 列表中的值?
使用索引或通过循环迭代列表来读取(访问)列表值。
1 | my_list = [1, 2, 3, 'apple', 'banana'] |
总结
本文我们对 Python Lists进行了详细的分析,Python Lists(列表)是一种用于存储有序数据集合的序列数据类型。列表用方括号 [] 表示,元素间用逗号分隔。列表支持多种数据类型的混合,并且是可变的,可以动态添加、删除或修改元素。常用方法包括 append()、insert()、remove() 和 pop() 等。列表推导式提供了一种简洁的方式来生成新列表。列表在数据存储、操作和分析中广泛应用。
学习交流
如果你觉得文章有帮助,请帮忙转发给更多的好友,或关注公众号:猿java,持续输出硬核文章。