for表达式利用可迭代对象建立新的列表,for表达式也称为列表推导式,具体语法格式以下:python
[表达式 for 循环计数器 in 可迭代对象]
例:对象
a = [ i + i for i in range(0,5) ] print (a) # 返回的是一个列表,打印 [0, 2, 4, 6, 8]
上面的例子中,range至关于包含5个元素(0,1,2,3,4),对表达式 i + i 执行5次,而且把5次执行的值收集起来做为新的列表元素。blog
for表达式还能够在可迭代对象后面加if条件,for表达式只会迭代符合条件的元素,generator
例:for循环
a = [ i + i for i in range(0,5) if i % 2 == 0] print (a) # 打印 [0, 4, 8]
上面的例子中,if i % 2 == 0筛选了range中的奇数,只对符合条件的3个元素(0,2,4)进行了迭代。class
for表达式把方括号[]改成圆括号(),将会生成一个生成器,生成器一样能够使用for循环迭代,object
例循环
a = ( i + i for i in range(5) ) print (a) # 将再也不生成列表,而是一个生成器。 打印 <generator object <genexpr> at 0x0000000002691B10> # 使用for循环迭代生成器 for h in a: print (h,end = '\t') # 打印 0 2 4 6 8
for表达是也能够使用多个循环,语法
例:生成器
a = [[i,j] for i in range(5) for j in range(6,8)] print (a) # 打印 [[0, 6], [0, 7], [1, 6], [1, 7], [2, 6], [2, 7], [3, 6], [3, 7], [4, 6], [4, 7]]
上面例子中,至关于以下的嵌套循环:
for i in range(5): for j in range(6,8): print ([i,j])
在嵌套的for表达式中,也能够添加if条件,
例:
a = [[i,j] for i in range(5) for j in range(5) if j == i] print (a) #打印 [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4]]
上面的例子中,只有当 i 和 j 相等时,才会进行迭代。