目录
一、循环结构
for循环和可迭代对象遍历
for 变量 in 可迭代对象:
循环体语句
可迭代对象
1.序列
2.字典
3.迭代器对象(iterator)
4.生成器函数(generator)
5.文件对象
range对象
range对象是一个迭代器对象,用来产生指定范围的数字序列
range(start, end, [step])
嵌套循环
一个循环体内可以嵌入另一个循环,一般称为“嵌套循环”,或者“多重循环”
break语句
用来结束循环,当在嵌套循环中,只能跳出最近的一层循环
continue语句
用于结束本次循环,继续下一次,当在嵌套循环中,只应用于最近的一层循环
else语句
while、for循环可以附带一个else语句(可选)。如果for、while语句没有被break结束,则会执行else子句(先执行完全部循环体),否则不执行。
while/for:
循环体
else:
语句块
并行迭代
zip()
zip()可以对多个序列同时进行并行迭代,在最短序列“用完”时就会停止
a = ("1","2","3","4")
b = ("5","6","7")
c = ("8","9","10","11")
for a, b, c in zip(a, b, c):
print(f"{a}--{b}--{c}")
#1--5--8 /n 2--6--9 /n 3--7--10
二、推导式创建序列
推导式是从一个或多个迭代器快速创建序列的一种方法,它可以将循环和条件判断结合,从而避免冗长的代码。
列表推导式
[表达式 for item in 可迭代对象]
or
[表达式 for item in 可迭代对象 if 条件判断]
eg:
[x*2 for x in range(1,5)] #range[1,5)
#[2, 4, 6, 8]
也可以使用两个循环,对于两个参数而言,但实际上是一个对象(比如点坐标)
字典推导式
{key_expression : value_expression for 表达式 in 可迭代对象}
eg:
my_text = "i love you"
char_count = {c:my_text.count(c) for c in my_text}
#{"i":1, " ":2, "l":1, "o":2, "v":1, "e":1, "u":1}
集合推导式
{表达式 for item in 可迭代对象}
or
{表达式 for item in 可迭代对象 if 条件判断}
生成器推导式(生成元组)
元组是没有推导式的,一个生成器只能运行一次,第一次迭代可以得到数据,第二次迭代发现数据已经没有了