目录
1. 选择结构
注:条件表达式中,不能有赋值操作符 “=” 。
1.1 三元条件运算符
语法格式:条件为真时的值 if (条件表达式) else 条件为假时的值
n = input("请输入一个数字:")
print("n是小于10的数字" if int(n)<10 else "n是大于等于10的数字")
2. 循环结构
2.1 for 循环&可迭代对象遍历
2.1.1 定义
for 循环通常用于可迭代对象的遍历,语法格式如下:
for 变量 in 可迭代对象:
循环体语句
2.1.2 可迭代对象
1. 序列:字符串、列表、元组、字典;
2. 迭代器对象(iterator),如 range 对象;
3. 生成器函数(generator);
4. 文件对象。
for x in (20,30,40): #遍历元组
print(x*3)
#产生序列:60 90 120
for x in "zzz001": #遍历字符串
print(x)
#产生序列:z z z 0 0 1
d = {'name':'老白','age':26,'address':'七侠镇'}
for x in d: #遍历字典所有的key
print(x)
for x in d.keys(): #遍历字典所有的key
print(x)
for x in d.values(): #遍历字典所有的value
print(x)
for x in d.items(): #遍历字典所有的"键值对"
print(x)
#range对象
for i in range(10) 产生序列:0 1 2 3 4 5 6 7 8 9
for i in range(3,10) 产生序列:3 4 5 6 7 8 9
for i in range(3,10,2) 产生序列:3 5 7 9
2.2 break & continue 语句
2.2.1 break
break 语句可用于 while 和 for 循环,结束整个循环。若存在嵌套循环,break 语句只跳出最近一层循环。
2.2.2 continue
continue 语句用于结束本次循环,继续下一次。若存在嵌套循环,continue 应用于最近一层循环。
2.2.3 else语句
while、for 循环可附带一个else 语句(可选)。若for、while 语句未被break 语句结束,则执行else 子句,否则不执行。
2.3 循环代码优化
编写循环时,应遵守以下原则,避免不必要的低效计算:
1. 尽量减少循环内部不必要的计算;
2. 嵌套循环中,尽量减少内层循环的计算,尽可能向外提;
3. 局部变量查询较快,尽量使用局部变量。
2.4 zip():并行迭代
可通过 zip() 函数对多个序列进行并行迭代,在最短序列“耗尽”时就会停止。
names = ("小郭","老白","秀才","大嘴")
ages = (20,26,25)
jobs = ("杂役","跑堂","账房","厨子")
for name,age,job in zip(names,ages,jobs):
print("{0}--{1}--{2}".format(name,age,job))
#上述代码功能类似于:
for i in range(3):
print("{0}--{1}--{2}".format(names[i],ages[i],jobs[i]))
'''
输出结果:
小郭--20--杂役
老白--26--跑堂
秀才--25--账房
'''
3. 推导式创建序列
推导式是一种由一个或者多个迭代器快速创建序列的方法,可将循环和条件判断结合,从而避免冗长的代码。
3.1 列表、字典、集合
#列表推导式
lt = [x*2 for x in range(1,20) if x%3==0]
print(lt)
#输出结果:[6, 12, 18, 24, 30, 36]
#字典推导式
my_text ="i love you, i love myself, i love the world"
char_count = {c:my_text.count(c) for c in my_text}
print(char_count)
char_count = {} #相当于以下普通循环的功能
for c in my_text:
char_count[c] = my_text.count(c)
print(char_count)
#输出结果:{'i': 3, ' ': 9, 'l': 5, 'o': 5, 'v': 3, 'e': 5, 'y': 2, 'u': 1, ',': 2, 'm': 1, 's': 1, 'f': 1, 't': 1, 'h': 1, 'w': 1, 'r': 1, 'd': 1}
#集合推导式
a = {x for x in range(1,100) if x%9==0}
print(a)
#输出结果:{99, 36, 72, 9, 45, 81, 18, 54, 90, 27, 63}
3.2 元组:生成器推导式
元组没有推导式。使用小括号()得到的是“一个生成器对象”。生成器对象可迭代,也可用于循环,但只能运行一次。
gnt = (x for x in range(1,100) if x%9==0)
print(type(gnt))
for x in gnt:
print(x,end=' ')
'''
输出结果:
<class 'generator'>
9 18 27 36 45 54 63 72 81 90 99
'''