Python编程:从入门到实践(第3版)

> 📖 **一起读书吧!** 加入《Python编程:从入门到实践》共读营 👉 [点击参加](https://mp.weixin.qq.com/s/ehe2vMrfAFscRLqbM9TF-g)

本讲内容

  • for循环遍历列表
  • 避免缩进错误
  • 创建数值列表(range)
  • 使用列表切片
  • 元组(不可变列表)
  • 设置代码格式(PEP 8)

学习目标

用循环批量处理列表数据 🔄


1. for循环遍历

1
2
3
4
5
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician)
print(f"{magician.title()}, that was a great trick!")
print("Thank you, everyone!")

官方文档:4.2. for Statements

缩进是Python的灵魂!同一缩进级别的代码属于同一个代码块。

2. 避免缩进错误

1
2
3
4
5
6
7
8
9
10
11
12
# ❌ 错误:for循环体缩进不一致
for cat in cats:
print(cat) # 缩进少了!

# ❌ 错误:忘了缩进循环后的代码
for dog in dogs:
print(dog)
print("Done!") # 这行不属于循环!

# ❌ 错误:不必要的缩进
message = "Hello"
print(message) # 不在函数/类里不需要缩进!

3. 创建数值列表:range()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for value in range(1, 5):
print(value)
# 输出:1 2 3 4(不包含5!)

# range()本身不创建列表,需要用list()转换
numbers = list(range(1, 6))
print(numbers) # [1, 2, 3, 4, 5]

# 步长
even_numbers = list(range(2, 11, 2))
print(even_numbers) # [2, 4, 6, 8, 10]

# 平方数
squares = []
for x in range(1, 11):
squares.append(x ** 2)
print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

官方文档:4.3. The range() Function — range() 生成算术序列,不实际创建列表,节省内存。

4. 简单统计

1
2
3
4
digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(min(digits)) # 0
print(max(digits)) # 9
print(sum(digits)) # 45

5. 列表推导式(Pythonic写法)

1
2
3
4
5
6
7
8
9
10
11
12
# 传统写法
squares = []
for x in range(1, 11):
squares.append(x ** 2)

# 列表推导式(一行搞定)
squares = [x ** 2 for x in range(1, 11)]
print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 带条件
even_squares = [x ** 2 for x in range(1, 11) if x % 2 == 0]
print(even_squares) # [4, 16, 36, 64, 100]

官方文档:5.1.3. List Comprehensions

6. 列表切片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
players = ['charles', 'martina', 'michael', 'florence', 'eli']

print(players[0:3]) # ['charles', 'martina', 'michael']
print(players[:3]) # 前3个
print(players[2:]) # 从索引2到末尾
print(players[-3:]) # 最后3个

# 遍历切片
print(players[0:3])
for player in players[:3]:
print(player.title())

# 复制列表(两个独立副本)
foods = ['pizza', 'falafel', 'carrot cake']
foods_copy = foods[:]
foods.append('cannoli') # foods变化,不影响foods_copy

⚠️ foods_copy = foods同一个列表的引用,不是复制!

7. 元组:不可变的列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 用圆括号创建元组
dimensions = (200, 50)
print(dimensions[0]) # 200
print(dimensions[1]) # 50

# ❌ 不能修改
# dimensions[0] = 250 # TypeError

# 但可以重新赋值整个元组
dimensions = (250, 100)
print(dimensions) # (250, 100)

# 单元素元组(注意逗号)
my_tuple = (3,) # 不是 (3)

官方文档:5.3. Tuples and Sequences — 元组是不可变序列。

8. 设置代码格式(PEP 8)

1
2
3
4
5
6
7
8
9
# ✅ 每级缩进用4个空格
# 正确
# 错误:用Tab或2个空格(Python 3禁止混用)

# ✅ 行长不超过79字符
# ✅ 操作符两边加空格:a = b + c
# ✅ 字典/函数调用:dict[key]、func(arg)

# ❌ 紧贴:a=b+c 或 dict[key]

官方文档:PEP 8 — Style Guide for Python Code — Python官方代码风格指南。

VS Code:安装 autopep8black 插件可自动格式化。


📚 官方文档参考


🎓 AI 编程实战课程

程序员晚枫专注AI编程培训,通过 《30讲 · AI编程训练营》,让小白也能用AI做出实际项目。