Python中列表(list)知识详解(2)和注意事项以及应用示例
在 Python 中列表(list) 的包括其结构、常见操作(更新、添加、删除、查找、队列栈行为等),下面将逐一的进行讲解并附相关的示例。
一、列表的基础知识
1. 定义与特点
-
定义方式:用
[]
包裹的有序可变集合 -
特点:
- 支持 任意类型混合
- 支持 索引、切片
- 可变对象(mutable)
- 支持 重复元素
- 可 嵌套
lst = [1, 'hello', 3.14, [4, 5]]
二、列表的基本操作详解
1. 访问元素
lst = [10, 20, 30, 40]
print(lst[0]) # 10
print(lst[-1]) # 40
2. 更新元素
lst[1] = 25
print(lst) # [10, 25, 30, 40]
三、添加元素
1. append()
:在末尾添加一个元素
lst.append(50)
# [10, 25, 30, 40, 50]
2. extend()
:在末尾扩展多个元素(列表合并)
lst.extend([60, 70])
# [10, 25, 30, 40, 50, 60, 70]
3. insert(index, value)
:在指定位置插入元素
lst.insert(1, 15)
# [10, 15, 25, 30, 40, 50, 60, 70]
四、删除元素
1. pop(index=-1)
:按索引删除,返回被删除元素
x = lst.pop() # 删除最后一个
y = lst.pop(1) # 删除索引 1 的元素
2. remove(value)
:按值删除第一个匹配项
lst.remove(30) # 删除第一个值为 30 的元素
3. clear()
:清空列表
lst.clear()
4. del
:按索引或切片删除
del lst[0]
del lst[1:3]
五、查找元素
1. in
操作
if 25 in lst:print("Found")
2. index(value, start, end)
:返回第一个匹配值的索引
lst.index(25)
3. count(value)
:统计出现次数
lst.count(25)
六、排序和反转
1. sort()
:原地排序
lst.sort() # 升序
lst.sort(reverse=True)
2. sorted()
:返回新排序列表(不修改原始列表)
sorted_lst = sorted(lst)
3. reverse()
:反转顺序
lst.reverse()
七、切片操作(强大)
lst = [0, 1, 2, 3, 4, 5]
print(lst[1:4]) # [1, 2, 3]
print(lst[::-1]) # [5, 4, 3, 2, 1, 0] 反转
print(lst[::2]) # [0, 2, 4]
八、栈(Stack)和队列(Queue)操作
栈:先进后出(LIFO)
stack = []
stack.append(1)
stack.append(2)
stack.append(3)
print(stack.pop()) # 3
队列:先进先出(FIFO)
from collections import dequequeue = deque()
queue.append(1)
queue.append(2)
queue.append(3)
print(queue.popleft()) # 1
九、列表推导式(List Comprehension)
squares = [x**2 for x in range(5)]
# [0, 1, 4, 9, 16]even = [x for x in range(10) if x % 2 == 0]
十、注意事项和常见误区
注意事项 | 说明 |
---|---|
append() 是添加整个对象,不是拆解元素 | |
remove() 只删除第一个匹配项,若找不到会抛异常 | |
list1 = list2 是引用同一个对象,修改一个影响另一个 | |
若想复制列表,使用 list.copy() 、list[:] 或 list() | |
使用 sort() 会直接修改原列表,无法恢复 | |
== 比较的是值,is 比较的是引用 |
错误示例
a = [1, 2]
b = a
b.append(3)
print(a) # [1, 2, 3],因为 a 和 b 指向同一个列表
正确复制:
b = a[:] # 或 a.copy()
十一、实用示例:队列模拟任务处理
from collections import dequetask_queue = deque(['task1', 'task2', 'task3'])while task_queue:current = task_queue.popleft()print(f"Processing {current}")
十二、小结
操作类型 | 方法 |
---|---|
添加元素 | append() , extend() , insert() |
删除元素 | pop() , remove() , clear() , del |
查找元素 | in , index() , count() |
排序与反转 | sort() , sorted() , reverse() |
栈操作 | append() , pop() |
队列操作 | collections.deque , append() , popleft() |
列表复制 | [:] , .copy() , list() |
推导式 | [x for x in iterable if ...] |