当前位置: 首页 > news >正文

【Python 列表(List)】

Python 中的列表(List)是最常用、最灵活的有序数据集合,支持动态增删改查操作。以下是列表的核心知识点:


一、基础特性

  1. 有序性:元素按插入顺序存储
  2. 可变性:支持增删改操作
  3. 允许重复:可存储重复元素
  4. 异构性:可包含不同类型数据
    my_list = [1, "apple", 3.14, True]
    

二、创建列表

1. 直接定义
fruits = ["apple", "banana", "orange"]
empty_list = []  # 空列表
2. 类型转换
list("hello")  # → ['h', 'e', 'l', 'l', 'o']
list((1,2,3))  # → [1, 2, 3]
3. 快速初始化
zeros = [0] * 5       # → [0, 0, 0, 0, 0]
matrix = [[0]*3 for _ in range(3)]  # 二维列表

三、常用操作

1. 索引与切片
nums = [10, 20, 30, 40, 50]
nums[0]      # → 10(正向索引,从0开始)
nums[-1]     # → 50(反向索引,从-1开始)
nums[1:4]    # → [20, 30, 40](切片,左闭右开)
nums[::-1]   # → [50, 40, 30, 20, 10](逆序)
2. 增删改查
# 增
nums.append(60)         # 末尾添加 → [10,20,30,40,50,60]
nums.insert(2, 25)      # 指定位置插入 → [10,20,25,30,40,50]# 删
nums.pop()              # 删除末尾元素 → 返回60
nums.remove(30)         # 删除第一个匹配项 → 删除30
del nums[1:3]           # 删除索引1-2的元素 → 删除20,25# 改
nums[0] = 100           # 修改索引0的元素 → [100,40,50]# 查
if 50 in nums:          # 成员检查 → Trueprint("存在")

四、常用方法

1. 排序与反转
nums = [3, 1, 4, 1, 5]
nums.sort()              # 原地排序 → [1, 1, 3, 4, 5]
sorted_nums = sorted(nums)  # 返回新列表 → [1,1,3,4,5]
nums.reverse()           # 原地反转 → [5,4,3,1,1]
2. 统计与查找
nums.count(1)            # 统计出现次数 → 2
nums.index(4)            # 查找首次出现位置 → 2
3. 连接与复制
a = [1,2]
b = [3,4]
a + b       # → [1,2,3,4](生成新列表)
a * 2       # → [1,2,1,2]
a.extend(b) # 原地扩展 → a变为[1,2,3,4]

五、嵌套列表

1. 创建多维列表
matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]
2. 访问元素
matrix[0][1]  # → 2(第一行第二列)
3. 修改元素
matrix[2][0] = 77  # 修改第三行第一列为77

六、高级技巧

1. 列表推导式
squares = [x**2 for x in range(10) if x%2 == 0]
# → [0, 4, 16, 36, 64]
2. 浅拷贝 vs 深拷贝
import copyoriginal = [[1,2], [3,4]]
shallow = original.copy()         # 浅拷贝(共享子列表)
deep = copy.deepcopy(original)    # 深拷贝(完全独立)
3. 列表与生成器
# 列表(直接存储所有元素)
list_data = [x for x in range(1000000)]# 生成器(按需生成,节省内存)
gen_data = (x for x in range(1000000))

七、常见应用场景

  1. 数据清洗

    raw_data = [" 42 ", "3.14", "NaN", "7"]
    cleaned = [float(x.strip()) for x in raw_data if x.strip().replace('.','').isdigit()]
    # → [42.0, 3.14, 7.0]
    
  2. 批量处理

    # 批量重命名文件
    files = ["a.txt", "b.txt", "c.txt"]
    new_files = [f"{i}.txt" for i, name in enumerate(files)]
    
  3. 算法实现

    # 快速排序
    def quicksort(arr):if len(arr) <= 1:return arrpivot = arr[len(arr)//2]return quicksort([x for x in arr if x < pivot]) + \[x for x in arr if x == pivot] + \quicksort([x for x in arr if x > pivot])
    

八、性能优化

  1. 尾部操作优先

    • append()/pop() 时间复杂度 O(1)
    • 头部插入/删除 O(n)(需移动所有元素)
  2. 避免频繁拼接

    # 低效方式
    res = []
    for x in big_list:res += [x]  # 每次生成新列表# 高效方式
    res = []
    for x in big_list:res.append(x)  # 原地修改
    
  3. 预分配空间(大数据量时):

    arr = [0] * 1000000  # 预分配百万元素列表
    

九、常见陷阱

  1. 可变默认参数

    def bad_append(new_item, my_list=[]):  # 危险!默认参数共享my_list.append(new_item)return my_list# 正确做法
    def good_append(new_item, my_list=None):if my_list is None:my_list = []my_list.append(new_item)return my_list
    
  2. 浅拷贝问题

    a = [[1,2], [3,4]]
    b = a.copy()  # 浅拷贝
    b[0][0] = 99  # 修改会影响a
    

通过掌握这些内容,可以高效处理从简单数据存储到复杂算法实现的各种场景。实际应用中需根据需求选择合适的方法,并注意性能优化和内存管理。

相关文章:

  • 前台--Android开发
  • p2p虚拟服务器
  • 佰力博科技与您探讨薄膜极化的类型、机制与应用领域
  • Spring 框架实战:如何实现高效的依赖注入,优化项目结构?
  • 使用Python和TensorFlow实现图像分类的人工智能应用
  • (x ^ 2 + 2y − 1) ^ 3 − x ^ 2 * y ^ 3 = 1
  • Xcode16.3配置越狱开发环境
  • Java中的内部类详解
  • TRO高能预警,Keith律所×Tane Hannah Meets版权两案王炸维权
  • Docker基础入门:容器化技术详解
  • 【wpf】12 在WPF中实现HTTP通信:封装HttpClient的最佳实践
  • Quorum协议原理与应用详解
  • 感兴趣文章研读
  • OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——gmp
  • MindSpore框架学习项目-ResNet药物分类-数据增强
  • Mac电脑远程连接window系统服务器
  • 如何将邮件送达率从60%提升到95%
  • 嵌入式openharmony标准系统中HDF框架底层原理分析
  • 理解 Envoy 的架构
  • C++八股 —— 函数指针与指针函数
  • 巴西总统卢拉将访华
  • 北外滩集团21.6亿元摘上海虹口地块,为《酱园弄》取景地
  • 城管给商户培训英语、政银企合作纾困,上海街镇这样优化营商环境
  • 上海优化营商环境十大攻坚突破任务中,为何第一项是实施世行对标改革?
  • 美国与胡塞武装达成停火协议,美伊相向而行?
  • 国铁集团:铁路五一假期运输收官,多项运输指标创历史新高