在 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 ...] |