Python-数据类型-列表

目录

一、定义列表

[1. 基础语法](#1. 基础语法)

[2. 空列表](#2. 空列表)

[3. 多类型元素列表](#3. 多类型元素列表)

[4. 嵌套列表(二维列表)](#4. 嵌套列表(二维列表))

[5. list () 构造函数](#5. list () 构造函数)

列表核心特点

二、列表的索引操作与切片操作

[1. 索引操作](#1. 索引操作)

[2. 切片操作](#2. 切片操作)

三、列表的增删查改操作

[1. 增加元素](#1. 增加元素)

[2. 删除元素](#2. 删除元素)

[3. 修改元素](#3. 修改元素)

[4. 查询元素](#4. 查询元素)

四、列表的其他方法

[1. sort () 排序](#1. sort () 排序)

[2. reverse () 反转](#2. reverse () 反转)

[3. copy () 拷贝](#3. copy () 拷贝)

五、通用函数

六、列表的运算符

七、综合案例:简易学生名单管理

列表常见坑点总结


列表是 Python 六大基础数据类型之一,属于可变有序序列 ,用来批量存储一组数据,支持动态增删改查,是日常开发中使用频率最高的数据类型。列表使用方括号 [] 定义,元素之间用逗号分隔,元素可以是数字、字符串、布尔值,甚至嵌套另一个列表。

一、定义列表

1. 基础语法

复制代码
# 格式:变量名 = [元素1, 元素2, 元素3...]
name_list = ["张三", "李四", "王五", "赵六"]
print(name_list)
print(type(name_list))  # <class 'list'>

2. 空列表

两种定义方式,开发中常用于先占位、后续追加数据。

复制代码
# 方式1:方括号直接定义
list1 = []
# 方式2:list()构造函数
list2 = list()

3. 多类型元素列表

列表不要求所有元素类型一致,可以混合存放不同类型数据。

复制代码
mix_list = ["小明", 18, True, 3.14]
print(mix_list)

4. 嵌套列表(二维列表)

列表内部可以再放列表,相当于表格、矩阵的结构。

复制代码
# 3个班级,每个班级3名学生
class_list = [
    ["张三", "李四", "王五"],
    ["赵六", "孙七", "周八"],
    ["吴九", "郑十", "王十一"]
]

5. list () 构造函数

可以将其他序列类型(字符串、元组等)转换为列表。

复制代码
# 字符串转列表,每个字符成为一个元素
s = list("python")
print(s)  # ['p', 'y', 't', 'h', 'o', 'n']

列表核心特点

  1. 有序性:每个元素有对应索引,顺序固定

  2. 可变性:可以修改、添加、删除元素,原列表会改变

  3. 可重复:允许存在相同的元素

  4. 支持索引和切片:和字符串用法高度相似

二、列表的索引操作与切片操作

1. 索引操作

和字符串一致,索引从 0 开始正向编号,-1 开始反向编号。 区别于字符串:列表可以通过索引直接修改元素

复制代码
lst = ["a", "b", "c", "d", "e"]
​
# 正向索引
print(lst[0])  # a
print(lst[2])  # c
​
# 负向索引
print(lst[-1]) # e
print(lst[-2]) # d
​
#列表可变:通过索引修改元素
lst[0] = "A"
print(lst)  # ['A', 'b', 'c', 'd', 'e']

! 注意:索引不能超出列表长度范围,否则报 IndexError: list index out of range 索引越界错误。

2. 切片操作

切片用来截取列表的一部分,返回一个新列表 ,不会修改原列表。 语法:列表[start : end : step]

  • start:起始索引,包含该位置;省略默认从开头开始

  • end:结束索引,取左不取右;省略默认到末尾

  • step:步长,默认 1;步长为负可反向截取

复制代码
lst = [10, 20, 30, 40, 50, 60]
​
print(lst[1:4])     # [20, 30, 40]
print(lst[:3])      # [10, 20, 30]
print(lst[2:])      # [30, 40, 50, 60]
print(lst[::2])     # [10, 30, 50]
print(lst[::-1])    # [60, 50, 40, 30, 20, 10] 列表反转

三、列表的增删查改操作

1. 增加元素

方法 作用 语法示例
append(元素) 末尾追加单个元素,最常用 lst.append(70)
insert(索引, 元素) 指定索引位置插入元素,后面元素后移 lst.insert(1, 15)
extend(序列) 批量追加另一个序列的所有元素 lst.extend([80,90])
复制代码
lst = [10, 20, 30]
​
# append 末尾加
lst.append(40)
print(lst)  # [10, 20, 30, 40]
​
# insert 指定位置插入
lst.insert(1, 15)
print(lst)  # [10, 15, 20, 30, 40]
​
# extend 批量合并
lst.extend([50, 60])
print(lst)  # [10, 15, 20, 30, 40, 50, 60]

注意:append([a,b]) 会把整个列表当做一个元素 加进去;extend([a,b]) 才是把两个元素逐个加入。

2. 删除元素

方法 / 关键字 作用 说明
pop() 删除最后一个元素,返回被删除的值 括号里可写索引,删除指定位置
remove(值) 值删除第一个匹配的元素 找不到会报错
clear() 清空列表所有元素 变成空列表
del 列表[索引] 关键字删除,按索引删 也可以删除整个列表
复制代码
lst = [10, 20, 30, 40, 20]
​
# pop 删除末尾,返回删除值
val = lst.pop()
print(val)  # 20
print(lst)  # [10, 20, 30, 40]
​
# pop 指定索引
lst.pop(1)
print(lst)  # [10, 30, 40]
​
# remove 按值删除第一个匹配项
lst.remove(30)
print(lst)  # [10, 40]
​
# del 关键字删除
del lst[0]
print(lst)  # [40]
​
# clear 清空
lst.clear()
print(lst)  # []

3. 修改元素

通过索引直接赋值修改,这是列表可变特性的核心用法。

复制代码
lst = ["苹果", "香蕉", "橘子"]
lst[1] = "西瓜"
print(lst)  # ['苹果', '西瓜', '橘子']

4. 查询元素

操作 作用
列表[索引] 按索引取值
index(值) 查找元素的索引,找不到报错
count(值) 统计元素出现的次数
元素 in 列表 判断元素是否存在,返回布尔值
复制代码
lst = ["a", "b", "c", "b", "d"]
​
print(lst.index("c"))  # 2
print(lst.count("b"))  # 2
print("e" in lst)      # False
print("a" not in lst)  # False

四、列表的其他方法

1. sort () 排序

对原列表原地排序,默认升序。

复制代码
lst = [5, 2, 9, 1, 7]
lst.sort()  # 升序,直接修改原列表
print(lst)  # [1, 2, 5, 7, 9]
​
# 降序排序
lst.sort(reverse=True)
print(lst)  # [9, 7, 5, 2, 1]

区分:内置函数 sorted(列表) 会返回新列表,不修改原列表。

2. reverse () 反转

原地反转列表顺序。

复制代码
lst = [1, 2, 3, 4]
lst.reverse()
print(lst)  # [4, 3, 2, 1]

3. copy () 拷贝

生成一个内容相同的新列表(浅拷贝),避免引用同一个内存地址。

复制代码
lst1 = [1, 2, 3]
lst2 = lst1.copy()
lst2[0] = 100
print(lst1)  # [1, 2, 3] 原列表不受影响

坑点:如果直接 lst2 = lst1,只是给同一个列表起别名,修改一个另一个也会变。

五、通用函数

这些是 Python 内置函数,可以直接作用在列表上。

函数 作用
len(列表) 返回列表元素个数
max(列表) 返回列表中最大值
min(列表) 返回列表中最小值
sum(列表) 返回列表所有元素之和
复制代码
lst = [10, 20, 30]
​
print(len(lst))   # 3
print(max(lst))   # 30
print(min(lst))   # 10
print(sum(lst))   # 60

注意:maxminsum 要求列表元素类型一致且可比较运算,不能混合字符串和数字。

六、列表的运算符

运算符 作用 示例
+ 拼接两个列表,生成新列表 [1,2] + [3,4]
* 重复列表多次 [1,2] * 3
in / not in 成员判断 3 in [1,2,3]
复制代码
# + 拼接
print([1,2] + [3,4])  # [1, 2, 3, 4]
​
# * 重复
print(["hi"] * 3)     # ['hi', 'hi', 'hi']
​
# in 判断
print(5 in [1,2,3])   # False

七、综合案例:简易学生名单管理

使用列表实现一个班级名单的增删改查管理程序,整合以上所有知识点。

复制代码
# 初始化班级名单
students = ["张三", "李四", "王五"]
​
print("=== 初始名单 ===")
print(students)
​
# 1. 新增一名学生
students.append("赵六")
print("\n新增后:", students)
​
# 2. 在第2个位置插入转学生
students.insert(1, "孙七")
print("插入后:", students)
​
# 3. 修改第3位学生姓名
students[2] = "李思思"
print("修改后:", students)
​
# 4. 删除叫王五的学生
students.remove("王五")
print("删除后:", students)
​
# 5. 统计人数
print(f"\n当前班级总人数:{len(students)}")
​
# 6. 判断某人是否在班级
name = "赵六"
if name in students:
    print(f"{name} 在本班")
else:
    print(f"{name} 不在本班")
​
# 7. 按姓名排序
students.sort()
print("\n排序后名单:", students)

运行结果:

复制代码
=== 初始名单 ===
['张三', '李四', '王五']
​
新增后: ['张三', '李四', '王五', '赵六']
插入后: ['张三', '孙七', '李四', '王五', '赵六']
修改后: ['张三', '孙七', '李思思', '王五', '赵六']
删除后: ['张三', '孙七', '李思思', '赵六']
​
当前班级总人数:4
赵六 在本班
​
排序后名单: ['张三', '李思思', '孙七', '赵六']

列表常见坑点总结

  1. 索引越界 :索引不能超过 len(列表)-1

  2. 引用赋值list2 = list1 不是拷贝,修改会互相影响,需要用 copy()

  3. remove 只删第一个:有重复元素时,只会删除第一个匹配项

  4. sort 原地修改 :会改变原列表,需要保留原列表请用 sorted()

  5. append 加列表是嵌套 :追加多个元素请用 extend()

相关推荐
2601_962301011 小时前
Python环境搭建及PyCharm破解使用技巧
python·pycharm·环境搭建·避坑技巧·破解使用
写后端的胖头鱼2 小时前
【高频面试题】Java 基础类型 + 包装类 + String 互相转换
java·开发语言
matlab代码2 小时前
基于matlab自助水果超市水果识别收费系统(GUI界面)【源码67期】
开发语言·matlab
hui-梦苑2 小时前
[PHP]轻量主题函数WordPress 集成 KaTeX 数学公式渲染
开发语言·php·wordpress·katex
2601_962099463 小时前
Python中的find()函数:用法和示例
python·字符串·索引·子字符串·find函数
大圣编蚕3 小时前
Java StringWriter 详解:从入门到实战
java·开发语言·python
码行山野赴时序归途3 小时前
C语言预处理指令:编译前的“幕后导演“
c语言·开发语言
golang学习记3 小时前
Go 1.27新特性: json/v2使用有趣指南
开发语言·golang·json
老苗项目实战4 小时前
Java工程师高频面试题(基于近一年的真实面试记录整理)
java·开发语言·面试·预见猿份·老苗项目实战