1. 程式人生 > >列表推導式,生成器表示式

列表推導式,生成器表示式

示例:使用for迴圈從1列印到100的數

l1 = []
for i in range(1,101):
    l1.append(i)
print(l1)

1、列表推導式

# 凡是用列表推導式能構建的資料,
# python程式碼都可以構建,列表推導式不能構建的資料,python程式碼亦可以可以構建
分為兩種模式:
1、迴圈模式 [變數(加工後的變數) for 變數 in iterable]
2、篩選模式 [變數(加工後的變數) for 變數 in iterable if 條件]
使用列表推導式列印1到100
l1 = [i for i in range(1, 101)]
print(l1)

 

#  構建一個列表:['python1期', 'python2期'....,'python24期']
print(['python%s期' % i for i in range(1, 25)])
2、篩選模式 [變數(加工後的變數) for 變數 in iterable if 條件]
# 30以內能被2整除的
l1 = [i for i in range(31) if i % 2 == 0]
print(l1)
# 1,[10以內所有數的平方: 1,4,9,16,.....100]
print([i*i for i in range(1, 11)])
print([i**2 for
i in range(1, 11)]) # 2,[30以內能被3整除的數的平方:39,36,81....900] print([i**2 for i in range(1, 31) if i % 3 == 0]) # 3、過濾掉l1列表長度小於3的字串列表,並將剩下的轉換成大寫字母 l1 = ['alex', 'taibai', 'wusir', 're', 'ab'] print([i.upper() for i in l1 if len(i) > 3])

2、生成器表示式

生成器表示式: (i*i for i in range(1000000000) 用() 括起來,其他規則與列表推導式一致。
列表是用[],生成器使用(),其他都一樣
l1 = (i for i in range(1, 101))
print(l1)

g1 = (i*i for i in range(1000000000))
g1 = (i*i for i in range(1000))
print(g1.__next__())

3、列表表示式和生成器表示式優缺點

列表推導式,生成器表示式:
優點:構造簡單,一行完成
缺點:1,不能排錯。
2,他不能構建複雜的資料結構