列表是Python中最基本、最常用的数据结构之一,它是一个有序的可变集合,可以包含不同类型的元素。

基本特性

  • 有序集合:元素按插入顺序存储
  • 可变类型:创建后可以修改内容
  • 可包含任意类型:同一个列表可以包含数字、字符串、其他列表等
  • 用方括号表示[]

创建列表

python

empty_list = []  # 空列表
numbers = [1, 2, 3, 4, 5]  # 数字列表
mixed = [1, "hello", 3.14, True]  # 混合类型列表
nested = [[1, 2], [3, 4]]  # 嵌套列表

常用操作

访问元素

python

my_list = ['a', 'b', 'c', 'd', 'e']
print(my_list[0])  # 'a' - 正向索引从0开始
print(my_list[-1]) # 'e' - 负索引表示从末尾开始

切片操作

python

print(my_list[1:3])  # ['b', 'c'] - 获取索引1到3(不含)的元素
print(my_list[:3])   # ['a', 'b', 'c'] - 从开始到索引3
print(my_list[2:])   # ['c', 'd', 'e'] - 从索引2到末尾
print(my_list[::2])  # ['a', 'c', 'e'] - 步长为2

修改列表

python

my_list[0] = 'z'  # 修改元素
my_list.append('f')  # 添加元素到末尾
my_list.insert(1, 'x')  # 在索引1处插入'x'
my_list.extend([1, 2, 3])  # 扩展列表

删除元素

python

del my_list[0]  # 删除索引0的元素
my_list.remove('b')  # 删除第一个出现的'b'
popped = my_list.pop()  # 移除并返回最后一个元素
popped = my_list.pop(1)  # 移除并返回索引1的元素

其他操作

python

length = len(my_list)  # 获取长度
if 'a' in my_list:  # 检查元素是否存在
    print("Found")
    
my_list.index('c')  # 返回'c'的索引
my_list.count('a')  # 统计'a'出现的次数
my_list.sort()  # 排序(原地修改)
sorted_list = sorted(my_list)  # 返回新排序列表
my_list.reverse()  # 反转列表

列表推导式

简洁创建列表的方式:

python

squares = [x**2 for x in range(10)]  # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
evens = [x for x in range(10) if x % 2 == 0]  # [0, 2, 4, 6, 8]

性能注意事项

  • 列表在开头插入/删除元素较慢(O(n)复杂度)
  • 在末尾添加/删除元素很快(O(1)复杂度)
  • 查找元素是否在列表中需要遍历(O(n)复杂度)

如果需要频繁在开头插入/删除,考虑使用collections.deque;如果需要频繁查找成员,考虑使用集合(set)。