Python中的列表(List)

列表(List)是 Python 中最基本的数据结构,它是一种有序的集合,列表中每个元素都有其对应的位置值(索引)。

创建列表

一般在创建列表时,分为创建空列表和非空列表,其创建方式如下:

# 创建空列表,有两种方式
list1 = list()
list2 = []

# 创建同一数据类型的列表
list3 = ["a", "b", "c", "d", "e", "f"]

# 创建不同数据类型的列表
list4 = ["a", 2, {}, [1, 3], False, ()]

从上面可以看到,我们只需要把列表的所有元素放在 方括号 [] 里面,每个元素之间通过 逗号 , 间隔起来即可,当然,列表中允许存放不同数据类型的元素。

获取列表中的元素

  • 下标索引取值

列表中的下标索引都是从 0 开始计算,第一个元素索引是 0 ,第二个元素索引是 1 ,以此类推。

>>> books = ["语文", "数学", "英语", "历史", "物理", "化学"]
>>>
>>> books[0]
'语文'
>>> books[5]
'化学'

另外,我们也可以从列表尾部开始计算索引,此时最后一个元素索引为 -1,倒数第二个元素索引为 -2 ,以此类推即可。当我们需获取列表最后一个元素,但又不知道列表长度时,可以通过该方式快速获取。

>>> books = ["语文", "数学", "英语", "历史", "物理", "化学"]
>>>
>>> books[-1]
'化学'
>>> books[-2]
'物理'
>>> books[-6]
'语文'
>>>
>>> books[100]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

如果设置的索引不存在,那么会报错:IndexError: list index out of range

  • 切片取值

列表中切片的语法为:列表[start:end:step],通过切片可以获取到列表中指定范围的元素。在这里,需要注意切片的规则是左闭右开,也就是说包含头部 start,但不包含尾部 end ,而 step 则表示切片的步长,需要每间隔 step 个元素取一次。

>>> books = ["语文", "数学", "英语", "历史", "物理", "化学"]
>>>
>>> books[1:4:2]  # 从第2个到第4个元素,每间隔2个元素取值
['数学', '历史']
>>> books[1::2]  # 从第2个到列表末尾,每间隔2个元素取值
['数学', '历史', '化学']
>>> books[1:4]  # 获取从第2个到第4个的所有元素
['数学', '英语', '历史']
>>> books[:]  # 获取全部元素
['语文', '数学', '英语', '历史', '物理', '化学']

列表切片时,我们可以设置切片的步长为负值,比如设置 step = -1,那么我们就可以逆序获取列表的元素。

>>> books[::-1]  # 逆序获取全部元素,即反转列表
['化学', '物理', '历史', '英语', '数学', '语文']

更新列表

在对列表进行更新操作时,我们可以根据索引对列表的元素进行修改或更新,也可以使用 append() 或 insert() 方法来添加元素。

  • 通过下标索引更新列表
>>> books = ["语文", "数学", "英语", "历史", "物理", "化学"]
>>>
>>> books[1] = "地理"
>>> print(books)
['语文', '地理', '英语', '历史', '物理', '化学']

当然,我们也可以通过切片赋值的方式来更新列表。

>>> books[2:4] = ["英语222", "历史222"]
>>> print(books)
['语文', '地理', '英语222', '历史222', '物理', '化学']
>>>
>>> books[2:4] = 1234
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only assign an iterable

需注意的是,通过切片方式赋值的值必须是可迭代对象(比如列表、元组等),否则会出现报错:TypeError: can only assign an iterable

  • 通过 append() 在列表末尾添加新对象
>>> books = ["语文", "数学", "英语", "历史", "物理", "化学"]
>>>
>>> books.append("地理")
>>> print(books)
['语文', '数学', '英语', '历史', '物理', '化学', '地理']
>>>
>>> books.append(6666)
>>> print(books)
['语文', '数学', '英语', '历史', '物理', '化学', '地理', 6666]
  • 通过 insert() 在指定位置插入新对象
>>> books = ["语文", "数学", "英语", "历史", "物理", "化学"]
>>>
>>> books.insert(1, "地理")
>>> print(books)
['语文', '地理', '数学', '英语', '历史', '物理', '化学']

删除列表中的元素

在对列表进行删除操作时,我们可以根据索引删除对应位置的元素,也可以根据元素本身的值进行删除,当然,还可以直接清空整个列表。

  • 通过 del 删除指定索引下的元素
>>> books = ["语文", "数学", "英语", "历史", "数学", "物理", "数学"]
>>>
>>> del books[1]  # 删除第 2 个元素
>>> print(books)
['语文', '英语', '历史', '数学', '物理', '数学']
>>>
>>> del books[1:4]  # 删除第 2 个到第 4 个的所有元素
>>> print(books)
['语文', '物理', '数学']

如果要删除列表的索引不存在,那么会出现报错,如下:

>>> del books[100]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
  • 通过 pop() 删除指定索引下的元素,会返回删除的元素
>>> books = ["语文", "数学", "英语", "历史", "数学", "物理", "数学"]
>>>
>>> books.pop()  # 默认删除列表最后一个元素
'数学'
>>> print(books)
['语文', '数学', '英语', '历史', '数学', '物理']
>>>
>>> books.pop(3)  # 删除列表指定索引下的元素
'历史'
>>> print(books)
['语文', '数学', '英语', '数学', '物理']

如果要删除列表的索引不存在,那么会出现报错,如下:

>>> books.pop(100)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: pop index out of range
  • 通过 remove() 删除指定元素,只会删除匹配的第一个元素
>>> books = ["语文", "数学", "英语", "历史", "数学", "物理", "数学"]
>>>
>>> books.remove("数学")
>>> print(books)
['语文', '英语', '历史', '数学', '物理', '数学']

如果要删除列表的对象不存在,那么会出现报错,如下:

>>> books.remove("美术")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
  • 通过 clear() 删除列表所有元素
>>> books = ["语文", "数学", "英语", "历史", "数学", "物理", "数学"]
>>>
>>> books.clear()
>>>
>>> print(books)
[]

列表运算操作符

  • 运算符 + ,用于组合拼接列表
>>> list1 = [1, 3, 5]
>>> list2 = [2, 4, 6]
>>>
>>> print(list1 + list2)
[1, 3, 5, 2, 4, 6]
  • 运算符 * ,用于重复列表
>>> name = ["hello", "word"]
>>>
>>> print(name * 3)
['hello', 'word', 'hello', 'word', 'hello', 'word']
  • 关键字 in

通过关键字 in ,可检查当前列表中是否包含指定元素,返回结果为布尔值 True 或 False。

>>> list3 = [1, 2, 3]
>>>
>>> print(2 in list3)
True
>>>
>>> print(6 in list3)
False

通过关键字 in ,还可以用于遍历当前列表。

books = ["语文", "数学", "英语", "历史", "物理", "化学"]
for i in books:
    print(i, end=" ")

列表函数&方法

函数 & 方法 描述
len(list) 返回列表元素个数
max(list) 返回列表元素最大值
min(list) 返回列表元素最小值
list(iterable) 将可迭代对象转换为列表,若 iterable 为空则创建空列表
list.append(obj) 在列表末尾添加新的对象
list.count(obj) 统计某个元素在列表中出现的次数
list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值
list.index(obj) 从列表中找出某个元素第一次出现的索引位置
list.insert(index, obj) 将对象插入到列表指定索引位置
list.pop(index) 删除并返回列表中的一个元素(默认最后一个元素)
list.remove(obj) 删除列表中某个值(只删除第一个匹配项)
list.reverse() 反向列表中元素
list.sort() 对原列表进行排序
list.clear() 清空列表
list.copy() 复制列表,相当于 list[:] ,使用的是浅拷贝
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章