目录

一、列表的核心特性

二、列表的创建

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 初学者系统学习。

一、列表的核心特性

在学习具体操作前,先理解列表的关键特性,能帮你快速掌握其使用逻辑:

  1. 有序性:列表中的元素有固定的顺序,通过索引可精准定位元素,顺序不会自动改变(除非手动修改)。

  2. 可变性:列表创建后,可对元素进行添加、删除、修改操作,区别于不可变的元组(Tuple)。

  3. 异构性:同一个列表中可存储不同数据类型的元素(如 [1, "Python", [2,3], True])。

  4. 可重复性:列表允许包含重复的元素(如 [2,2,3,3])。

  5. 动态大小:列表的长度可动态增减,无需提前定义固定长度。

二、列表的创建

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 range

3. 切片访问(获取子列表)

切片可以获取列表中连续的多个元素,生成新的列表,语法格式为:


列表[起始索引:结束索引:步长]

关键规则

  • 切片是左闭右开的,即包含起始索引的元素,不包含结束索引的元素。

  • 省略起始索引:默认从 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 defined

2. 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 list

4. 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) → 1

count(值)

统计指定值在列表中出现的次数

列表.count(值)

[1,2,2,3].count(2) → 2

sort()

对列表元素正向排序(修改原列表),默认升序

`列表

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐