- 1. 选择结构
- 1.1 单分支
- 1.2 双分支
- 1.3 多分枝
- 1.4 选择嵌套
- 2. 循环结构
- 2.1 while循环
- 2.2 for 循环
- 2.3 相关语句
- 3.循环代码优化
- 4. 使用zip()进行并行迭代
- 5. 推导式创建序列
- 5.1 列表推导式
- 5.2 字典推导式
- 5.3 集合推导式
- 5.4 生成器推导式(用于生成元组)
if 条件表达式: 语句 / 语句块
- 条件表达式:逻辑表达式、关系表达式、算术表达式等,不能有赋值操作。
- 语句/语句块:多条语句缩进必须对齐。
if 条件表达式: 语句1 / 语句块1 else: 语句2 / 语句块2
- 三元条件运算符
# 条件为真时的操作 if 条件表达式 else 条件为假时的操作
a = input("请输入一个数字:")
print(a if int(a)<10 else "请重新输入!")
1.3 多分枝
if 条件表达式1: 语句1 / 语句块1 elif 条件表达式2: 语句2 / 语句块2 ... elif条件表达式n 语句n / 语句块n [else: 语句n+1 / 语句块n+1 ]
- 多个条件表达式之间必须存在逻辑关系,不能颠倒顺序;
if 表达式1: 语句块1 if 表达式2: 语句块2 else: 语句块3 else: if 表达式4: 语句块4
2. 循环结构 2.1 while循环
while 条件表达式: 循环体语句2.2 for 循环
for 变量 in 可迭代对象: 循环体语句
- 可迭代对象:序列、迭代器对象、生成器对象、文件对象;
- range 对象:是一个迭代器对象,range(start, end, [step]) (不包含end);
- break语句:用于结束循环,嵌套循环中,只能跳出最近一层循环;
- continue语句:结束本次循环,继续下一次循环,在嵌套循环中,只对最近一层循环起作用;
- else语句:while 和 for 循环可以附带else语句,如果没有被break语句结束,则会执行else子句,否则不执行。;
3.循环代码优化
- 三个原则
- 尽量减少循环内部不必要的计算;
- 嵌套循环中,尽量减少内部循环的计算,尽可能向外提;
- 局部变量查询较快,尽量使用局部变量;
- 其他优化手段
- 连接多个字符串,使用join()而不使用’ + ';
- 列表进行元素插入和删除,尽量在列表尾部操作;
4. 使用zip()进行并行迭代
- zip()函数能够对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止;
names = ('a', 'b', 'c')
nums = ('1', '2', '3', '4')
for name,num in zip(names, nums) # 会只循环三次
print("{0}--{1}".format(name, num))
5. 推导式创建序列 5.1 列表推导式
[表达式 for item in 可迭代对象] 或者: [表达式 for item in 可迭代对象 if 判断语句]
[x*2 for x in range(1, 5)] # [2, 4, 6, 8] [x*2 for x in range(1, 20) if x%5 == 0] # [10, 20, 30]5.2 字典推导式
{key_expression : value_expression for 表达式 in 可迭代对象}
# 统计文本中字符出现次数
my_text = 'i love you'
char_count = {c : my_text.count(c) for c in my_text}
5.3 集合推导式
{表达式 for item in 可迭代对象}
或者:
{表达式 for item in 可迭代对象 if 判断语句}
5.4 生成器推导式(用于生成元组)
(表达式 for item in 可迭代对象) 或者: (表达式 for item in 可迭代对象 if 判断语句)
- 一个生成器只能运行一次,第二次运行时,生成器内的数据已经被清空;



