一天一个Python知识点——Day 5: 列表(List)基础操作
一天一个Python知识点——Day 5: 列表(List)基础操作
ZhangCurry一天一个Python知识点——Day 5: 列表(List)基础操作
列表(List)是Python中最灵活的有序集合类型,可以存储任意类型的元素,并且支持动态修改。今天我们将全面学习列表的核心操作!
列表的创建
列表用方括号[]表示,元素之间用逗号分隔:
1 | # 创建空列表 |
特殊创建方式:
1 | # 使用list()构造函数 |
列表的索引与切片
和字符串类似,列表支持索引和切片操作。
索引访问
1 | fruits = ["apple", "banana", "cherry"]print(fruits[0]) # "apple"(正向索引从0开始) |
切片操作
1 | numbers = [0, 1, 2, 3, 4, 5] |
列表的修改
列表是可变对象,可以直接修改元素:
1 | fruits = ["apple", "banana", "cherry"] |
列表的常用方法
添加元素
| 方法 | 描述 | 示例 |
|---|---|---|
append() |
在末尾添加单个元素 | fruits.append("orange") |
insert() |
在指定位置插入元素 | fruits.insert(1, "mango") |
extend() |
添加多个元素(合并列表) | fruits.extend(["grape", "pear"]) |
删除元素
| 方法 | 描述 | 示例 |
|---|---|---|
remove() |
删除指定值的元素 | fruits.remove("banana") |
pop() |
删除并返回指定索引的元素 | last = fruits.pop() |
clear() |
清空整个列表 | fruits.clear() |
其他操作
| 方法 | 描述 | 示例 |
|---|---|---|
index() |
返回元素的索引 | fruits.index("apple") |
count() |
统计元素出现次数 | fruits.count("apple") |
sort() |
原地排序 | fruits.sort() |
reverse() |
原地反转 | fruits.reverse() |
copy() |
浅拷贝列表 | new_list = fruits.copy() |
列表的运算
1 | a = [1, 2, 3]b = [4, 5] |
列表的遍历
1 | # 直接遍历元素fruits = ["apple", "banana", "cherry"]for fruit in fruits: print(fruit) |
实战练习
1 | # 统计列表中大于5的元素数量 |
今日总结
- 列表创建:[]或list(),可包含任意类型元素
- 索引切片:与字符串类似,list[0]、list[1:3]、list[::-1]
- 修改方法:append()、insert()、remove()、pop()等
- 列表运算:+拼接、*重复、in检测成员
- 遍历方式:直接遍历或使用enumerate()
思考题:
1 | a = [1, 2, 3]b = ab[0] = 100print(a) # 输出什么?为什么? |
Python 列表赋值与引用解释
这段代码演示了 Python 中列表的可变性和引用机制:
python
1 | a = [1, 2, 3] |
详细解释
创建列表:
python
1 | a = [1, 2, 3] |
- 创建一个列表对象
[1, 2, 3] - 变量
a指向这个列表
赋值操作:
python
1 | b = a |
- 这不是创建列表的副本,而是让
b指向a所指向的同一个列表对象 - 现在
a和b是同一个列表的两个名称(别名)
修改列表:
python
1 | b[0] = 100 |
- 通过
b修改列表的第一个元素 - 由于
a和b指向同一个列表,a看到的列表也被修改了
输出结果:
python
print(a) # 输出 [100, 2, 3]a = [1, 2, 3] b = a.copy() # 或 b = a[:] 或 b = list(a) b[0] = 100 print(a) # 输出 [1, 2, 3] (不受影响) print(b) # 输出 [100, 2, 3]1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- 验证了 `a` 指向的列表确实被修改了
## 关键概念
- **可变对象**:列表是可变对象,可以就地修改
- **引用赋值**:`b = a` 只是复制了引用,而不是创建新对象
- **副作用**:通过一个引用修改对象会影响所有引用该对象的变量
## 如何真正复制列表
如果想创建独立副本,可以使用以下方法:
python
这样 `a` 和 `b` 就是两个独立的列表对象,修改一个不会影响另一个。



