1. 列表介绍
在 Python 中,列表是一种重要的数据结构,它由一组有序的元素组成,这些元素可以是不同类型的对象,比如数字、字符串和其他对象,列表是Python内置的数据结构之一,Python中的列表与数组类似,可以用来存储多个元素,列表是可变的,也就是说,可以向其中添加或删除元素。
1.1 声明和初始化列表
声明一个列表可以使用方括号 []
或者 list()
函数:
a = [1, 2, 3, 4, 5]
b = list(range(5))
print(a, b)
输出结果如下:
[1, 2, 3, 4, 5] [0, 1, 2, 3, 4]
上面代码中,我们声明了两个列表,一个是直接使用方括号来初始化的,另一个是使用 list()
函数初始化的,这两种方式的效果是一样的。
1.2 访问列表元素
Python 中的列表从 0 开始索引,可以使用下标运算符来访问元素,如下所示:
a = [1, 2, 3, 4, 5]
print(a[0]) # 输出 1
print(a[1]) # 输出 2
print(a[-1]) # 输出 5,-1 表示最后一个元素
上面的代码中,我们使用下标运算符访问列表元素,其中 a[-1]
表示访问最后一个元素。
1.3 插入和删除元素
Python 中的列表是可变的,可以向其中添加或删除元素。下面我们来看一下如何向列表中添加元素:
a = [1, 2, 3, 4, 5]
a.append(6) # 添加元素 6
print(a) # 输出 [1, 2, 3, 4, 5, 6]
上面的代码中,我们使用 append()
方法向列表中添加一个新的元素。
可以使用 insert()
方法来插入元素到指定的位置,如下所示:
a = [1, 3, 4, 5]
a.insert(1, 2) # 在下标 1 处插入元素 2
print(a) # 输出 [1, 2, 3, 4, 5]
上面的代码中,我们在列表中的下标 1 处插入了一个新的元素。
列表中还有一些其他的方法用于删除和操作元素,如下所示:
a = [1, 2, 3, 4, 5]
a.remove(3) # 删除元素 3
print(a) # 输出 [1, 2, 4, 5]
a.pop() # 删除最后一个元素
print(a) # 输出 [1, 2, 4]
a.sort() # 排序
print(a) # 输出 [1, 2, 4]
a.reverse() # 反转
print(a) # 输出 [4, 2, 1]
上面的代码中,我们使用了 remove()
和 pop()
方法删除了元素,使用 sort()
进行排序,使用 reverse()
方法进行反转操作。
1.4 列表的长度和统计
可以使用 len() 函数来获取列表的长度:
a = [1, 2, 3, 4, 5]
print(len(a)) # 输出 5
可以使用 count() 方法来统计列表中指定元素的出现次数:
a = [1, 2, 3, 4, 5, 4]
print(a.count(4)) # 输出 2
2. 列表切片操作
Python中的列表还支持切片操作,可以通过切片操作来获取到指定范围内的元素,切片操作的形式如下:
[起始位置:终止位置:步长]
其中,起始位置是需要获取元素的起始下标,终止位置是需要获取元素的终止下标,步长表示获取元素的间距。
接下来,我们来看一下如何使用切片来获取列表中的元素,如下所示:
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a[1:5]) # 输出 [2, 3, 4, 5]
print(a[1:7:2]) # 输出 [2, 4, 6]
print(a[:5]) # 输出 [1, 2, 3, 4, 5]
print(a[::2]) # 输出 [1, 3, 5, 7, 9]
上面的代码中,我们使用了不同的切片操作,可以通过切片操作来获取到指定范围内的元素,非常方便。
3. 列表的复制和拼接
3.1 列表的复制
可以使用 =
运算符来进行列表的复制操作,如下所示:
a = [1, 2, 3, 4, 5]
b = a
print(b) # 输出 [1, 2, 3, 4, 5]
上面的代码中,我们使用 =
运算符将列表 a
的值复制给了列表 b
,这样,当 a
中的值发生改变时,b
中的值也会发生改变。
如果我们想要复制一个列表,同时改变列表的值不会影响到原来列表的值,可以使用 copy() 方法来复制,如下所示:
a = [1, 2, 3, 4, 5]
b = a.copy()
a[0] = 0
print(a) # 输出 [0, 2, 3, 4, 5]
print(b) # 输出 [1, 2, 3, 4, 5]
上面的代码中,我们使用 copy()
方法来复制了列表 a
的值,改变了 a
中的值,但是并没有影响到 b
中的值。
3.2 列表的拼接
我们可以使用加号运算符来进行列表的拼接操作,如下所示:
a = [1, 2, 3]
b = [4, 5, 6]
c = a + b
print(c) # 输出 [1, 2, 3, 4, 5, 6]
上面的代码中,我们使用加号运算符将两个列表进行了拼接操作,得到了一个新的列表。
4. 列表的遍历操作
在Python中,我们可以使用 for 循环来对列表进行遍历操作,如下所示:
a = [1, 2, 3, 4, 5]
for i in a:
print(i)
上面的代码中,我们使用 for 循环对列表进行遍历操作,遍历过程中使用变量 i
来保存遍历到的元素。
5. 列表的推导式
Python中提供了一种非常方便的方式来生成列表,那就是使用列表推导式。
列表推导式的一般形式如下:
[expression for item in iterable if condition]
可以理解为一种快速、简洁、可读性高的列表生成方式,其中:
iterable
:可以是列表、元组、集合、字典等可迭代对象。
item
:每次从 iterable
迭代出的元素。
condition
:用来过滤元素。
expression
:每次迭代元素计算表达式的值。
接下来,我们通过一些示例来具体了解一下列表推导式的使用方法。
5.1 基本用法
假设我们需要生成一个列表,其中包含 1 到 10 的所有偶数,可以使用列表推导式来实现,如下所示:
a = [i for i in range(1, 11) if i % 2 == 0]
print(a) # 输出 [2, 4, 6, 8, 10]
上面的代码中,我们使用列表推导式的方式来生成了一个包含 1 到 10 的所有偶数的列表。
5.2 嵌套用法
列表推导式还支持嵌套使用,可以使用多个 for 循环来实现嵌套方式生成列表数据。
假设我们需要生成一个九九乘法表,可以使用列表推导式的嵌套方式来实现,如下所示:
a = [(i, j, i * j) for i in range(1, 10) for j in range(1, 10)]
print(a)
上面的代码中,我们使用列表推导式的嵌套方式生成了一个九九乘法表。
6. 列表的高级操作
6.1 枚举
可以使用 enumerate()
函数来获取列表中元素的下标和值:
a = [1, 2, 3, 4, 5]
for i, v in enumerate(a):
print(i, v)
上面的代码中,我们使用 enumerate()
函数来获取列表中的元素下标和值,并使用循环语句来依次输出元素下标和值。
6.2 排序
可以使用 sort()
方法来对列表进行排序,排序后的列表将会按照升序排列:
a = [5, 3, 1, 4, 2]
a.sort()
print(a) # 输出 [1, 2, 3, 4, 5]
上面的代码中,我们使用 sort()
方法对列表进行排序,最终得到了一个升序排列的列表。
此外,还可以使用 sorted()
函数对列表进行排序操作,相比于 sort()
方法,sorted()
函数不会修改原有的列表,而是返回一个排序后的新列表。
a = [5, 3, 1, 4, 2]
b = sorted(a)
print(a) # 输出 [5, 3, 1, 4, 2]
print(b) # 输出 [1, 2, 3, 4, 5]
6.3 过滤器
可以使用 filter() 函数来实现对列表元素的过滤操作。
假设我们需要过滤出所有大于 3 的元素,可以使用 filter() 函数来实现,如下所示:
a = [1, 2, 3, 4, 5]
new_a = filter(lambda x: x > 3, a)
print(list(new_a)) # 输出 [4, 5]
上面的代码中,我们使用 filter() 和 lambda 表达式来过滤出所有大于 3 的元素,并使用 list() 函数将过滤结果转化为列表。