本文最后更新于52 天前,在知识的增长过程中难免会有错误的理解,如有您发现有错误或者有不同的见解请发送邮件到thelistenerofrain@163.com或者留言~
1. 插入与删除元素 ➕➖
Python编辑nums.clear() # 清空列表,O(n)
nums.append(1) # 尾部添加,O(1)
nums.append(3)
# ...
nums.insert(3, 6) # 在索引 3 处插入 6,O(n)
nums.pop(3) # 删除索引 3 处的元素,O(n)
nums.pop() # 删除并返回最后一个元素,O(1)
⚠️ 注意:
insert(i, x)和pop(i)在非尾部位置操作时,需要移动大量元素,效率低。- 尽量在尾部操作以获得最佳性能。
2. 遍历列表 🔁
方法一:通过索引遍历
Python编辑count = 0
for i in range(len(nums)):
count += nums[i]
方法二:直接遍历元素(推荐)
Python编辑count = 0
for num in nums:
count += num
方法三:同时获取索引和值
Python编辑for i, num in enumerate(nums):
print(i, num)
✅ 优先使用直接遍历(更简洁、可读性高);仅当需要索引时才用
enumerate或range(len(...))。
3. 拼接列表 🔗
Python编辑nums1: list[int] = [6, 8, 7, 10, 9]
nums += nums1 # 将 nums1 拼接到 nums 末尾
# 等价于:nums.extend(nums1)
+=和extend()都是 原地修改,效率高于+(+会创建新列表)。- 时间复杂度:O(k),k 为被拼接列表的长度。
4. 排序列表 📊
Python编辑nums.sort() # 原地排序,升序(从小到大)
nums.sort(reverse=True) # 降序
- 使用 Timsort 算法(稳定、高效,最坏 O(n log n))
- 排序后可使用:
- 二分查找(需配合
bisect模块) - 双指针技巧(如两数之和、三数之和等)
- 二分查找(需配合
💡 示例:排序后查找目标值
Python编辑import bisect idx = bisect.bisect_left(nums, target) if idx < len(nums) and nums[idx] == target: print("Found!")