Python 基础 - 第七节
📋 本节要点
| 知识点 | 说明 |
|---|---|
list |
列表,一种有序的可变数据结构 |
| 索引 | 从 0 开始的编号,用于访问元素 |
append() |
在列表末尾添加元素 |
insert() |
在指定位置插入元素 |
extend() |
合并另一个列表 |
pop() |
删除指定位置的元素并返回 |
remove() |
删除第一个匹配的值 |
del |
删除元素或整个列表 |
in / not in |
判断元素是否存在 |
| 切片 | 截取列表的一部分 |
sort() |
列表排序 |
reverse() |
列表反转 |
enumerate() |
同时获取索引和值 |
count() |
统计元素出现次数 |
index() |
查找元素索引 |
1. 列表的创建与访问
列表用 [] 包裹,元素之间用逗号分隔,可存储不同类型的数据。
# 创建列表
subjects = ["语文", "数学", "英语"]
mixed = [1, "hello", 3.14, True] # 不同类型
empty = [] # 空列表
1.1 索引访问
列表中的每个元素都有一个索引,从 0 开始编号。
print(subjects[0]) # 语文
print(subjects[1]) # 数学
print(subjects[2]) # 英语
print(subjects[-1]) # 英语(负索引从右往左)
print(subjects[-2]) # 数学
注意:索引从 0 开始,
subjects[0]是第一个元素。负索引-1表示最后一个元素。
1.2 in / not in 判断元素是否存在
fruits = ["苹果", "香蕉", "橘子"]
print("苹果" in fruits) # True
print("西瓜" in fruits) # False
print("西瓜" not in fruits) # True
2. 列表的增删改
2.1 增 - append() 末尾添加
append() 在列表末尾添加一个元素。
subjects.append("生物")
print(subjects)
运行结果:
['语文', '数学', '英语', '生物']
2.2 增 - insert() 指定位置插入
insert(索引, 值) 在指定位置插入元素,原位置及后面元素自动后移。
subjects.insert(1, "物理") # 在索引 1 处插入
print(subjects)
运行结果:
['语文', '物理', '数学', '英语', '生物']
2.3 增 - extend() 合并列表
extend() 将另一个列表的所有元素添加到当前列表末尾。
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)
print(a) # [1, 2, 3, 4, 5, 6]
运行结果:
[1, 2, 3, 4, 5, 6]
2.4 删 - pop() 删除并返回
pop(索引) 删除指定位置的元素,并返回该元素。默认删除最后一个。
item = subjects.pop() # 删除最后一个
print(item) # 生物
item = subjects.pop(1) # 删除索引 1 的元素
print(item) # 物理
print(subjects) # ['语文', '数学', '英语']
2.5 删 - remove() 删除指定值
remove(值) 删除第一个匹配的元素,不知道索引时使用。
scores = [85, 92, 78, 92, 60]
scores.remove(92) # 删除第一个 92
print(scores) # [85, 78, 92, 60]
2.6 删 - del 语句
del 可以删除指定索引的元素,也可以删除整个列表。
nums = [10, 20, 30, 40, 50]
del nums[1] # 删除索引 1 的元素(20)
print(nums) # [10, 30, 40, 50]
del nums # 删除整个列表(之后 nums 不再存在)
2.7 改 - 直接赋值修改
通过索引直接赋值可以修改指定位置的元素。
nums = [10, 20, 30, 40, 50]
nums[1] = 99 # 把索引 1 的元素改为 99
print(nums) # [10, 99, 30, 40, 50]
3. 切片
切片用于获取列表的一部分(子列表),语法为 列表[起始:结束:步长],左闭右开(包含起始,不包含结束)。
3.1 基本切片 [start:end]
grade = ["张三", 18, "李四", 20, "王五", "赵六"]
print(grade[0:2]) # ['张三', 18](索引 0 到 1)
print(grade[4:]) # ['王五', '赵六'](从索引 4 到末尾)
print(grade[:2]) # ['张三', 18](从开头到索引 1)
print(grade[:]) # 复制整个列表
3.2 负索引切片
print(grade[-3:]) # ['李四', 20, '王五', '赵六'](后 3 个到末尾)
print(grade[:-1]) # ['张三', 18, '李四', 20, '王五'](去掉最后一个)
print(grade[-3:-1]) # ['李四', 20, '王五'](负索引区间)
3.3 步长切片 [start:end:step]
步长表示每几个元素取一个,默认为 1。
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums[::2]) # [0, 2, 4, 6, 8](每隔一个取一个)
print(nums[1::2]) # [1, 3, 5, 7, 9](从索引 1 开始每隔一个)
print(nums[::-1]) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0](反转列表)
3.4 切片复制列表
original = [1, 2, 3]
copy_list = original[:] # 复制整个列表
copy_list[0] = 99
print(original) # [1, 2, 3](原列表不受影响)
print(copy_list) # [99, 2, 3]
4. 列表方法
4.1 sort() - 排序
age = [67, 12, 34, 89, 3, 23]
age.sort() # 升序排序
print(age) # [3, 12, 23, 34, 67, 89]
age.sort(reverse=True) # 降序排序
print(age) # [89, 67, 34, 23, 12, 3]
运行结果:
[3, 12, 23, 34, 67, 89]
[89, 67, 34, 23, 12, 3]
4.2 reverse() - 反转
age.reverse()
print(age) # [3, 12, 23, 34, 67, 89](又变回升序)
运行结果:
[3, 12, 23, 34, 67, 89]
4.3 enumerate() - 同时获取索引和值
li = [5, 6, 9, "test", 3.14]
for index, value in enumerate(li):
print(f"索引 {index} → {value}")
运行结果:
索引 0 → 5
索引 1 → 6
索引 2 → 9
索引 3 → test
索引 4 → 3.14
4.4 count() - 统计元素出现次数
nums = [1, 2, 2, 3, 2, 4, 2]
print(nums.count(2)) # 4(2 出现了 4 次)
print(nums.count(5)) # 0(5 没有出现过)
运行结果:
4
0
4.5 index() - 查找元素索引
fruits = ["苹果", "香蕉", "橘子", "香蕉"]
print(fruits.index("香蕉")) # 1(第一个匹配的索引)
print(fruits.index("橘子")) # 2
运行结果:
1
2
下一节预告:字符串、元组、集合与字典
评论区
0 条暂时还没有评论,欢迎来抢沙发。