for表达式语法格式
[表达式 for 循环计数器 in 可迭代对象]
可以看出与普通for循环的区别有两点:
- 在for关键字之前定义一个表达式,该表达式通常会包含循环计数器
- for表达式没有循环体,因此不需要冒号
for表达式最终返回的是列表,因此for表达式也被称为列表推导式
a_range = range(10)
a_list = [x*x for x in a_range]#对a_range进行迭代 由于a_range包含10个元素,因此a_list同样包含10个元素
print(a_list)
还可以添加if条件来进行筛选
b_list = [x*x for x in a_range if x%2==0]
print(b_list)
如果将方括号改为圆括号,那么他返回的是生成器,也被称为生成器表达式。
c_generator = (x*x for x in a_range )
print(c_generator)#<generator object <genexpr> at 0x000001C60876F4A0>
for i in c_generator:
print(i,end='\t') #0 1 4 9 16 25 36 49 64 81
也可以有多个循环
d_dict = [(x,y) for x in range(5) for y in range(3)]
print(d_dict) #[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2), (3, 0), (3, 1), (3, 2), (4, 0), (4, 1), (4, 2)]