今天这节分享是对之前二十一课for循环的补充,根据考纲的编排,在前几节for表达式不作为考试的考点。那我们具体来看看for循环的语法是怎样的。for表达式
for表达式的语法格式 如下:
- 在 for 关键字之前定义一个表达式,该表达式通常会包含循环计数器
for 表达式最终返回的是列表,因此 for 表达式也被称为列表推导式a_range = range(10)# 对a_range执行for表达式a_list = [x * x for x in a_range]# a_list集合包含10个元素print(a_list)
b_list = [x * x for x in a_range if x % 2 == 0]# a_list集合包含5个元素print(b_list)
将 for 表达式的方括号改为圆括号, for 表达式将不再生成列表,而是生成一个生成器 (generator),该生成器同样可使用 for 循环选代。这种 for 表达式也被称为生成器# 使用for表达式创建生成器c_generator = (x * x for x in a_range if x % 2 == 0)# 使用for循环迭代生成器for i in c_generator: print(i, end='\t')print()
d_list = [(x, y) for x in range(5) for y in range(4)]# d_list列表包含20个元素print(d_list)
其中x可以迭代5次,y可以迭代4次。所以一共是20次,等同于如下:dd_list = []for x in range(5): for y in range(4): dd_list.append((x, y))print(dd_list)
e_list = [[x, y, z] for x in range(5) for y in range(4) for z in range(6)]# 3_list列表包含120个元素print(e_list)
src_a = [30, 12, 66, 34, 39, 78, 36, 57, 121]src_b = [3, 5, 7, 11]# 只要y能整除x,就将它们配对在一起result = [(x, y) for x in src_b for y in src_a if y % x == 0]print(result)