)
目录一、列表的核心特性二、列表的创建1. 基础创建方括号 []2. 使用 list() 函数创建3. 快速生成列表列表推导式三、访问列表元素1. 正向索引与反向索引2. 索引越界问题3. 切片访问获取子列表四、修改列表元素1. 修改单个元素2. 修改多个元素切片赋值五、添加列表元素1. append() 方法添加单个元素到列表末尾2. extend() 方法添加可迭代对象的元素到列表末尾3. insert() 方法在指定位置插入元素4. 切片赋值批量添加元素六、删除列表元素1. del 语句删除元素或整个列表2. pop() 方法删除指定索引的元素并返回该元素3. remove() 方法删除指定值的元素4. clear() 方法清空列表所有元素七、列表的常用内置方法列表List是 Python 中最常用、最灵活的内置数据结构之一属于有序、可变、可重复的序列。它可以存储不同数据类型的元素如数字、字符串、列表、字典等是 Python 编程中处理数据集合的核心工具。本教程将从基础概念、创建方式、访问元素、增删改查、切片、常用方法、嵌套列表、实战案例等方面全面讲解列表的用法适合 Python 初学者系统学习。一、列表的核心特性在学习具体操作前先理解列表的关键特性能帮你快速掌握其使用逻辑有序性列表中的元素有固定的顺序通过索引可精准定位元素顺序不会自动改变除非手动修改。可变性列表创建后可对元素进行添加、删除、修改操作区别于不可变的元组Tuple。异构性同一个列表中可存储不同数据类型的元素如[1, Python, [2,3], True]。可重复性列表允许包含重复的元素如[2,2,3,3]。动态大小列表的长度可动态增减无需提前定义固定长度。二、列表的创建Python 提供多种方式创建列表最常用的是方括号[]和list()函数具体如下1. 基础创建方括号[]这是最简洁、最常用的创建方式直接在方括号中用逗号,分隔元素。# 1. 空列表后续可添加元素 empty_list [] print(空列表, empty_list) # 输出空列表 [] # 2. 存储单一数据类型的列表 num_list [1, 2, 3, 4, 5] # 整数列表 str_list [a, b, c, d] # 字符串列表 bool_list [True, False, True] # 布尔值列表 # 3. 存储多种数据类型的列表异构列表 mixed_list [1, Python, 3.14, [2, 3], {name: Tom}] print(异构列表, mixed_list) # 输出异构列表 [1, Python, 3.14, [2, 3], {name: Tom}]2. 使用list()函数创建list()函数可将可迭代对象如字符串、元组、集合、range 对象等转换为列表。# 1. 将字符串转为列表每个字符作为一个元素 str_to_list list(Python) print(字符串转列表, str_to_list) # 输出字符串转列表 [P, y, t, h, o, n] # 2. 将元组转为列表元组是不可变的转列表后可修改 tuple_to_list list((10, 20, 30)) print(元组转列表, tuple_to_list) # 输出元组转列表 [10, 20, 30] # 3. 将 range 对象转为列表生成连续数字的列表 range_to_list list(range(1, 6)) # 生成1-5的整数 print(range转列表, range_to_list) # 输出range转列表 [1, 2, 3, 4, 5] # 4. 将集合转为列表集合是无序的转列表后顺序可能变化 set_to_list list({1, 2, 3, 4}) print(集合转列表, set_to_list) # 输出集合转列表 [1, 2, 3, 4]顺序可能随机3. 快速生成列表列表推导式列表推导式是 Python 简洁高效的语法可快速生成符合规则的列表后续会详细讲解这里先看基础示例# 生成1-10的偶数列表 even_list [i * 2 for i in range(1, 6)] print(偶数列表, even_list) # 输出偶数列表 [2, 4, 6, 8, 10]三、访问列表元素列表的元素访问主要通过索引Index和切片Slice实现Python 支持正向索引和反向索引。1. 正向索引与反向索引正向索引从列表第一个元素开始索引从0开始递增。反向索引从列表最后一个元素开始索引从-1开始递减-1是最后一个元素-2是倒数第二个以此类推。示例# 定义一个水果列表 fruit_list [苹果, 香蕉, 橙子, 葡萄, 芒果] # 正向索引访问 print(第一个元素, fruit_list[0]) # 输出第一个元素 苹果 print(第三个元素, fruit_list[2]) # 输出第三个元素 橙子 # 反向索引访问 print(最后一个元素, fruit_list[-1]) # 输出最后一个元素 芒果 print(倒数第二个元素, fruit_list[-2]) # 输出倒数第二个元素 葡萄2. 索引越界问题如果访问的索引超出列表的范围Python 会抛出IndexError异常。# fruit_list 长度为5索引范围是0-4-5到-1 # print(fruit_list[5]) # 报错IndexError: list index out of range # print(fruit_list[-6]) # 报错IndexError: list index out of range3. 切片访问获取子列表切片可以获取列表中连续的多个元素生成新的列表语法格式为列表[起始索引:结束索引:步长]关键规则切片是左闭右开的即包含起始索引的元素不包含结束索引的元素。省略起始索引默认从0开始。省略结束索引默认到列表末尾。省略步长默认步长为1正向取元素。步长为负数反向取元素。示例num_list [10, 20, 30, 40, 50, 60, 70] # 基础切片 print(num_list[1:4]) # 索引1-3不包含4输出[20, 30, 40] print(num_list[:3]) # 从0开始到2输出[10, 20, 30] print(num_list[3:]) # 从3开始到末尾输出[40, 50, 60, 70] print(num_list[:]) # 复制整个列表输出[10, 20, 30, 40, 50, 60, 70] # 带步长的切片 print(num_list[1:6:2]) # 步长为2取索引1、3、5输出[20, 40, 60] print(num_list[::3]) # 从0开始步长3输出[10, 40, 70] # 反向切片 print(num_list[::-1]) # 步长-1反转列表输出[70, 60, 50, 40, 30, 20, 10] print(num_list[-3:-1]) # 倒数3到倒数1不包含输出[50, 60]四、修改列表元素列表是可变对象可通过索引直接修改指定位置的元素也可通过切片修改多个元素。1. 修改单个元素通过索引定位元素直接赋值新值。fruit_list [苹果, 香蕉, 橙子] print(修改前, fruit_list) # 输出修改前 [苹果, 香蕉, 橙子] # 修改索引1的元素 fruit_list[1] 草莓 print(修改后, fruit_list) # 输出修改后 [苹果, 草莓, 橙子]2. 修改多个元素切片赋值通过切片获取连续元素再赋值为可迭代对象如列表、元组、字符串等赋值的长度可与切片长度不同。num_list [1, 2, 3, 4, 5] print(修改前, num_list) # 输出修改前 [1, 2, 3, 4, 5] # 替换索引1-2的元素为新列表 num_list[1:3] [20, 30, 40] print(修改后, num_list) # 输出修改后 [1, 20, 30, 40, 4, 5] # 替换索引0的元素为字符串字符串是可迭代对象每个字符作为元素 num_list[0:1] 678 print(再次修改, num_list) # 输出再次修改 [6, 7, 8, 20, 30, 40, 4, 5]五、添加列表元素Python 提供多种方法向列表中添加元素包括添加单个元素、添加多个元素、在指定位置添加元素等。1.append()方法添加单个元素到列表末尾这是最常用的添加方法语法列表.append(元素)无返回值直接修改原列表。fruit_list [苹果, 香蕉] print(添加前, fruit_list) # 输出添加前 [苹果, 香蕉] # 添加单个元素 fruit_list.append(橙子) print(添加后, fruit_list) # 输出添加后 [苹果, 香蕉, 橙子] # 添加列表嵌套列表 fruit_list.append([葡萄, 芒果]) print(嵌套添加后, fruit_list) # 输出嵌套添加后 [苹果, 香蕉, 橙子, [葡萄, 芒果]]2.extend()方法添加可迭代对象的元素到列表末尾将可迭代对象列表、元组、字符串等的每个元素依次添加到列表末尾语法列表.extend(可迭代对象)。num_list [1, 2, 3] print(添加前, num_list) # 输出添加前 [1, 2, 3] # 扩展列表 num_list.extend([4, 5, 6]) print(扩展列表后, num_list) # 输出扩展列表后 [1, 2, 3, 4, 5, 6] # 扩展元组 num_list.extend((7, 8)) print(扩展元组后, num_list) # 输出扩展元组后 [1, 2, 3, 4, 5, 6, 7, 8] # 扩展字符串 num_list.extend(90) print(扩展字符串后, num_list) # 输出扩展字符串后 [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]3.insert()方法在指定位置插入元素语法列表.insert(索引, 元素)将元素插入到指定索引位置原索引及后续元素依次后移。fruit_list [苹果, 橙子] print(插入前, fruit_list) # 输出插入前 [苹果, 橙子] # 在索引1的位置插入“香蕉” fruit_list.insert(1, 香蕉) print(插入后, fruit_list) # 输出插入后 [苹果, 香蕉, 橙子] # 在索引0的位置插入元素开头 fruit_list.insert(0, 草莓) print(开头插入后, fruit_list) # 输出开头插入后 [草莓, 苹果, 香蕉, 橙子] # 索引超过列表长度插入到列表末尾 fruit_list.insert(10, 西瓜) print(末尾插入后, fruit_list) # 输出末尾插入后 [草莓, 苹果, 香蕉, 橙子, 西瓜]4. 切片赋值批量添加元素通过切片赋值的方式可在指定位置添加多个元素本质是“替换空切片”。num_list [1, 5] print(添加前, num_list) # 输出添加前 [1, 5] # 在索引1的位置插入[2,3,4] num_list[1:1] [2, 3, 4] print(添加后, num_list) # 输出添加后 [1, 2, 3, 4, 5]六、删除列表元素Python 提供多种删除元素的方式包括删除单个元素、删除指定索引元素、清空列表、删除列表本身等。1.del语句删除元素或整个列表del是 Python 的关键字可通过索引/切片删除元素也可直接删除整个列表。fruit_list [苹果, 香蕉, 橙子, 葡萄] # 1. 删除单个元素按索引 del fruit_list[1] print(删除单个元素后, fruit_list) # 输出删除单个元素后 [苹果, 橙子, 葡萄] # 2. 删除多个元素按切片 del fruit_list[1:] print(删除切片元素后, fruit_list) # 输出删除切片元素后 [苹果] # 3. 删除整个列表删除后列表不存在 del fruit_list # print(fruit_list) # 报错NameError: name fruit_list is not defined2.pop()方法删除指定索引的元素并返回该元素语法列表.pop(索引)若省略索引默认删除并返回最后一个元素。num_list [10, 20, 30, 40] # 1. 删除最后一个元素 last_num num_list.pop() print(删除的元素, last_num) # 输出删除的元素 40 print(删除后列表, num_list) # 输出删除后列表 [10, 20, 30] # 2. 删除指定索引元素 mid_num num_list.pop(1) print(删除的元素, mid_num) # 输出删除的元素 20 print(删除后列表, num_list) # 输出删除后列表 [10, 30]3.remove()方法删除指定值的元素语法列表.remove(值)删除第一个匹配的元素若值不存在则报错。fruit_list [苹果, 香蕉, 橙子, 香蕉] # 删除第一个“香蕉” fruit_list.remove(香蕉) print(删除后, fruit_list) # 输出删除后 [苹果, 橙子, 香蕉] # 删除不存在的元素会报错 # fruit_list.remove(葡萄) # 报错ValueError: list.remove(x): x not in list4.clear()方法清空列表所有元素语法列表.clear()保留空列表不删除列表本身。num_list [1, 2, 3, 4] print(清空前, num_list) # 输出清空前 [1, 2, 3, 4] num_list.clear() print(清空后, num_list) # 输出清空后 []七、列表的常用内置方法除了上述增删改方法列表还提供了丰富的内置方法可实现排序、查找、计数、反转等功能以下是常用方法汇总方法作用语法示例index(值)查找指定值的第一个索引不存在则报错列表.index(值)[1,2,3].index(2)→ 1count(值)统计指定值在列表中出现的次数列表.count(值)[1,2,2,3].count(2)→ 2sort()对列表元素正向排序修改原列表默认升序列表