一、Python中的列表(List)
Python的列表是动态数组,内置于语言中,功能强大且易用,非常适合算法竞赛。
1. 基本概念
- 定义:列表是一个有序、可变的序列,可以存储任意类型的元素(整数、字符串、甚至其他列表等)。
- 声明方式:
my_list = [] # 空列表 my_list = [1, 2, 3] # 包含元素的列表 mixed_list = [1, "hello", 3.14] # 混合类型
- 特点:
- 动态大小:可以随时添加或删除元素,无需预先指定大小。
- 可变性:可以修改列表中的元素。
- 索引:支持正向索引(从0开始)和负向索引(从-1开始倒数)。
- 内存:Python列表内部是动态数组,扩容时会分配更多空间(通常是当前大小的1.5到2倍)。
2. 常用操作
以下是Python列表的核心操作,时间复杂度标注在括号中:
- 访问元素:
my_list[i]
( O ( 1 ) O(1) O(1))print(my_list[0]) # 访问第一个元素 print(my_list[-1]) # 访问最后一个元素
- 修改元素:
my_list[i] = value
( O ( 1 ) O(1) O(1))my_list[0] = 10 # 将第一个元素改为10
- 追加元素:
append(value)
(均摊 O ( 1 ) O(1) O(1))my_list.append(4) # 在末尾添加4
- 插入元素:
insert(index, value)
( O ( n ) O(n) O(n),因为需要移动元素)my_list.insert(1, 5) # 在索引1处插入5
- 删除元素:
pop(index)
:删除并返回指定索引的元素,默认删除末尾( O ( 1 ) O(1) O(1)末尾, O ( n ) O(n) O(n)其他位置)my_list.pop() # 删除末尾元素 my_list.pop(0) # 删除第一个元素
remove(value)
:删除第一个匹配的值( O ( n ) O(n) O(n),因为需要查找)my_list.remove(2) # 删除值为2的元素
- 切片:
my_list[start:end:step]
( O ( k ) O(k) O(k),k是切片长度)print(my_list[1:3]) # 获取索引1到2的子列表 print(my_list[::-1]) # 反转列表
- 长度:
len(my_list)
( O (