专栏地址:最强 Python3 基础
公众号:Python 生产力
前言
列表,通俗点来讲就是一组数据按照线性排序所组成的有限序列。注意,这边列表是有顺序的,也就是说元素的排列是根据添加的顺序来排列的。
在列表上,我们可以通过对列表中的元素进行查找、插入、删除等基本操作,实现数据的简单处理。
可以通过以下几个例子来看到,列表的基本形式就是在一个中括号中用逗号分开一组数据的形式。而且,列表中的数据类型并不固定,所有 Python 中的基本类型都可以存入并进行操作。
list1 = [1, 2, 3, 4, 5, 6]
list2 = ['Python', 'Java', 'C++']
list3 = ['James', 188.5, 35]
还有一种是进行嵌套的列表,也就是列表中可以包含子列表,每个元素都可以是一个列表。
list1 = [[1, 2, 3], [4, 5, 6]]
list2 = [[1, 2, 3], 'C++']
一、列表的操作
1. 查询
和字符串一样,列表的数据查找也是需要通过索引来判断数据的位置并输出的,而且索引的位置一样是从 0 开始的,并不是从 1 开始。通过索引,我们可以对列表做各种操作。
这边我们可以根据例子来获取列表中的某个元素。举例:
通过最下面的输出内容可以看到,获取列表中相对应的值,只需要填入值相对应的索引就行。
list1 = ['Python', 'Java', 'C++', 'Go', 'Ruby']
print(list1[0])
print(list1[1])
print(list1[2])
# 输出:
Python
Java
C++
而且可以看到,最下面还有一个反向索引,反向索引和正向的索引一样,只不过顺序是倒过来的,并且索引不是从 0 开始,而是从 -1 开始的。
list1 = ['Python', 'Java', 'C++', 'Go', 'Ruby']
print(list1[-1])
print(list1[-2])
print(list1[-3])
# 输出:
Ruby
Go
C++
2. 切片
同时,列表也可以像字符串一样进行切片、截取,使用方式和字符串截取是一样的。可以回顾一下:Python3 字符串数据类型
list1 = ['Python', 'Java', 'C++', 'Go', 'Ruby']
print(list1[0:2])
print(list1[-3:-1])
# 输出:
['Python', 'Java']
['C++', 'Go']
3. 删除
对列表元素的删除操作可以使用 del 语句。
list1 = ['Python', 'Java', 'C++', 'Go', 'Ruby']
del list1[1]
print(list1)
# 输出:
['Python', 'C++', 'Go', 'Ruby']
4. 更新
列表可以通过 append() 方法来进行元素的添加。可以看以下的例子,因为列表可以接收不同类型的数据元素,所以可以在原来全是字符串数据的列表中添加数字数据。
list1 = ['Python', 'Java', 'C++', 'Go', 'Ruby']
list1.append(1990)
list1.append('JavaScript')
print(list1)
# 输出:
['Python', 'Java', 'C++', 'Go', 'Ruby', 1990, 'JavaScript']
或者可以对指定位置的元素进行替换。
list1 = ['Python', 'Java', 'C++', 'Go', 'Ruby']
print('原列表:', list)
list1[0] = 'JavaScript'
list1[2] = 1991
print('更新后的列表:', list)
# 输出:
原列表: ['Python', 'Java', 'C++', 'Go', 'Ruby']
更新后的列表: ['JavaScript', 'Java', 1991, 'Go', 'Ruby']
还有一种方式是用切片的方式对列表中某一部分做更新操作或删除操作,这种方式比一个一个做替换效率要高许多。
例子中,最后一部分是使用切片的方式对原列表做整体的删除。
list1 = ['Python', 'Java', 'C++', 'Go', 'Ruby']
list2 = [123, 456, 789]
list1[1:3] = ['替换的内容1', 1234, 12.3]
print(list)
list1[:] = []
print(list)
list2 = []
print(list2)
# 输出:
['Python', '替换的内容1', 1234, 12.3, 'Go', 'Ruby']
[]
[]
5. 列表运算
列表可以像普通的字符串一样进行运算。目前支持的操作符有 “ + ” 和 “ * ”。“+” 操作符相当于拼接,“*” 操作符相当于复制。
list1 = [1, 2, 3]
list2 = [4, 5, 6]
print(list1 + list2)
print(list1 * 5)
# 输出:
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
二、列表的内置函数
Python 中内置了各种列表操作函数,我们可以运用这些函数对列表做增删改查各种操作。
list1 = [1, 2, 3, 4]
函数名称 | 形式 | 描述 | 举例 | 结果 |
---|---|---|---|---|
append | list.append(x) | 添加 obj 对象 | list.append(5) | [1, 2, 3, 4, 5] |
count | list.count(obj) | 计算 obj 对象在列表中出现的次数 | list.count(3) | 1 |
extend | list.extend(iterable) | 将 seq 序列添加到列表中 | list.extend([5, 6]) | [1, 2, 3, 4, 5, 6] |
index | list.index(x[, start[, end]]) | 查找列表中 obj 第一个匹配到的索引值 | list.index(4) | 3 |
insert | list.insert(i, x) | 将 obj 对象插入到具体索引位置上 | list.insert(2, 9) | [1, 2, 9, 3, 4] |
pop | list.pop([i]) | 移除列表中某个索引位置的值,默认为最后一个元素 | list.pop() | [1, 2, 3] |
remove | list.remove(obj) | 移除列表中的 obj 对象 | list.remove(2) | [1, 3, 4] |
reverse | list.reverse() | 反转列表中的对象 | list.reverse() | [4, 3, 2, 1] |
sort | list.sort(*, key=None, reverse=False) | 排序列表中的对象,如果给定了具体的方法,则使用给定的方法排序 | list = [1, 4, 2, 3, 6] list.sort() | [1, 2, 3, 4, 6] |
clear | list.clear() | 清空列表 | list.clear() | [] |
copy | list.copy() | 对列表进行浅拷贝 |
总结
以上是列表的介绍与基本操作,实际运用中列表会覆盖到许多运用场景,所以运用好列表,能给实际操作添加一大助力。