一、for表達式
1、for表達式語法格式及用法
for表達式利用可迭代對象創建新的列表,for表達式也稱為列表推導式,具體語法格式如下:
[表達式 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次執行的值收集起來作為新的列表元素。
2、for表達式添加if條件
for表達式還可以在可迭代對象后面加if條件,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)進行了迭代。
3、生成器推導式
for表達式把方括號[]改為圓括號(),將會生成一個生成器,生成器同樣可以使用for循環迭代,
例
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
4、嵌套for表達式
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 相等時,才會進行迭代。