【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
    

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/80070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt 的原理及使用(1)——qt的背景及安装

1. Qt 背景介绍 1.1 什么是 Qt Qt 是⼀个 跨平台的 C 图形⽤⼾界⾯应⽤程序框架 。它为应⽤程序开发者提供了建⽴艺术级图形 界⾯所需的所有功能。它是完全⾯向对象的&#xff0c;很容易扩展。Qt 为开发者提供了⼀种基于组件的开发模 式&#xff0c;开发者可以通过简单的拖拽…

多分类问题softmax传递函数+交叉熵损失

在多分类问题中&#xff0c;Softmax 函数通常与交叉熵损失函数结合使用。 Softmax 函数 Softmax 函数是一种常用的激活函数&#xff0c;主要用于多分类问题中。它将一个实数向量转换为概率分布&#xff0c;使得每个元素的值在 0 到 1 之间&#xff0c;且所有元素的和为 1。 …

数智读书笔记系列032《统一星型模型--一种敏捷灵活的数据仓库和分析设计方法》

引言 在当今数字化时代,数据仓库作为企业数据管理的核心基础设施,承担着整合、存储和提供企业数据的关键角色。随着商业环境的快速变化和业务需求的日益复杂,数据仓库的设计方法也在不断演进,以适应新的挑战和要求。 背景与意义 数据仓库领域长期存在着两种主流方法论之…

RT-Thread 深入系列 Part 1:RT-Thread 全景总览

摘要&#xff1a; 本文将从 RTOS 演进、RT-Thread 的版本分支、内核架构、核心特性、社区与生态、以及典型产品应用等多维度&#xff0c;全面呈现 RT-Thread 的全景图。 关键词&#xff1a;RT-Thread、RTOS、微内核、组件化、软件包管理、SMP 1. RTOS 演进与 RT-Thread 定位 2…

[docker基础一]docker简介

目录 一 消除恐惧 1) 什么是虚拟化&#xff0c;容器化 2)案例 3)为什么需要虚拟化&#xff0c;容器化 二 虚拟化实现方式 1)应用程序执行环境分层 2)虚拟化常见类别 3)常见虚拟化实现 一&#xff09;主机虚拟化(虚拟机)实现 二&#xff09;容器虚拟化实现 一 消除恐…

PostgreSQL 的 pg_advisory_lock 函数

PostgreSQL 的 pg_advisory_lock 函数 pg_advisory_lock 是 PostgreSQL 提供的一种应用级锁机制&#xff0c;它不锁定具体的数据库对象&#xff08;如表或行&#xff09;&#xff0c;而是通过数字键值来协调应用间的并发控制。 锁的基本概念 PostgreSQL 提供两种咨询锁(advi…

SGLang 实战介绍 (张量并行 / Qwen3 30B MoE 架构部署)

一、技术背景 随着大语言模型&#xff08;LLM&#xff09;的飞速发展&#xff0c;如何更高效、更灵活地驾驭这些强大的模型生成我们期望的内容&#xff0c;成为了开发者们面临的重要课题。传统的通过拼接字符串、管理复杂的状态和调用 API 的方式&#xff0c;在处理复杂任务时…

微服务中 本地启动 springboot 无法找到nacos配置 启动报错

1. 此处的环境变量需要匹配nacos中yml配置文件名的后缀 对于粗心的小伙伴在切换【测试】【开发】环境的nacos使用时会因为这里导致项目总是无法启动成功

Lua从字符串动态构建函数

在 Lua 中&#xff0c;你可以通过 load 或 loadstring&#xff08;Lua 5.1&#xff09;函数从字符串动态构建函数。以下是一个示例&#xff1a; 示例 1&#xff1a;基本动态函数构建 -- 动态构建一个函数 local funcStr "return function(a, b) return a b end"-…

【Python】‌Python单元测试框架unittest总结

1. 本期主题&#xff1a;Python单元测试框架unittest详解 unittest是Python内置的单元测试框架&#xff0c;遵循Java JUnit的"测试驱动开发"&#xff08;TDD&#xff09;理念&#xff0c;通过继承TestCase类实现测试用例的模块化组织。本文聚焦于独立测试脚本的编写…

【Python 实战】---- 使用Python批量将 .ncm 格式的音频文件转换为 .mp3 格式

1. 前言 .ncm 格式是网易云音乐专属的加密音频格式,用于保护版权。这种格式无法直接播放,需要解密后才能转换为常见的音频格式。本文将介绍如何使用 Python 批量将 .ncm 格式的音频文件转换为 .mp3 格式。 2. 安装 ncmdump ncmdump 是一个专门用于解密 .ncm 文件的工具。它…

Linux 学习笔记2

Linux 学习笔记2 一、定时任务调度操作流程注意事项 二、磁盘分区与管理添加新硬盘流程磁盘管理命令 三、进程管理进程操作命令服务管理&#xff08;Ubuntu&#xff09; 四、注意事项 一、定时任务调度 操作流程 创建脚本 vim /path/to/script.sh # 编写脚本内容设置可执行权…

YOLO目标检测算法

文章目录 前言一、目标检测算法简介1、传统目标检测算法&#xff08;1&#xff09;R-CNN算法简介&#xff08;2&#xff09;Fast R-CNN算法简介&#xff08;3&#xff09;Faster R-CNN算法简介 2、目标检测中的算法设计范式&#xff08;1&#xff09;one-stage&#xff08;2&am…

【软件设计师:软件】20.软件设计概述

一、软件设计基本原则 一、软件设计基本原则 1. 模块 是指执行某一特定任务的数据结构和程序代码。 将模块的接口和功能定义为其外部特性将模块的局部数据和实现该模块的程序代码称为内部特性。在模块设计时,最重要的原则就是实现信息隐蔽和模块独立。 2 . 信息隐蔽 将每…

软件工程之面向对象分析深度解析

前文基础&#xff1a; 1.软件工程学概述&#xff1a;软件工程学概述-CSDN博客 2.软件过程深度解析&#xff1a;软件过程深度解析-CSDN博客 3.软件工程之需求分析涉及的图与工具&#xff1a;软件工程之需求分析涉及的图与工具-CSDN博客 4.软件工程之形式化说明技术深度解…

需求分析阶段测试工程师主要做哪些事情

在软件测试需求分析阶段&#xff0c;主要围绕确定测试范围、明确测试目标、细化测试内容等方面开展工作&#xff0c;为后续测试计划的制定、测试用例的设计以及测试执行提供清晰、准确的依据。以下是该阶段具体要做的事情&#xff1a; 1. 需求收集与整理 收集需求文档&#x…

vLLM部署Qwen2-7B模型推理

vllm简介 vLLM是一个高效的大语言模型推理和部署服务系统&#xff0c;专为大型语言模型的高效执行而设计。它不仅支持多种量化技术以减少模型大小和加速推理过程&#xff0c;还提供了与OpenAI API兼容的服务接口&#xff0c;使得现有的应用程序能够无缝对接。 一、前提环境 …

【STM32 学习笔记】GPIO输入与输出

GPIO详解 一、GPIO基本概念 GPIO&#xff08;通用输入输出&#xff09;是微控制器与外部设备交互的核心接口&#xff0c;具有以下特性&#xff1a; 可编程控制输入/输出模式支持数字信号的读取与输出集成多种保护机制复用功能支持片上外设连接 二、GPIO位结构解析 2.1 保护二…

安科瑞光伏综自系统在新能源电站中的应用及调度上传方案研究

摘要 随着全球对清洁能源需求的不断增长&#xff0c;光伏发电作为一种可持续的能源解决方案&#xff0c;正迅速发展。光伏综合自动化系统&#xff08;综自系统&#xff09;在确保光伏电站高效、稳定运行方面起着关键作用。本文详细介绍了安科瑞光伏综自系统&#xff0c;包括其背…

[python] 函数2-匿名函数

一 匿名函数 格式: 函数名 lambda 形参 : 返回值(表达式) 调用: 结果 函数名(实参) 一般只有一行代码,他是对def定义函数的一种简化,只能实现简单的逻辑 逻辑复杂时不要使用lambda add lambda a,b: ab # a,b就是形参 print(add(2,5)) 1.1 无参数 noargs_func lambda…