1. 程式人生 > >4-4日 列表推導式,生成器推導式

4-4日 列表推導式,生成器推導式

兩種模式 span 一個 列表 bsp 字符 ali eva pos

1,列表推導式就是在列表中進行for 循環if語句判斷,最多兩個for,一個if判斷

#求1到30 被3整除的數的平方
li = [i*i for i in range(1,31)if i%3 == 0]
print(li)
li = [i for i in range(1,101)if i%2 == 0]
l2 = [i for i in range(1,101)if i%2 == 1]
print(li)
print(l2)
#求列表中帶兩個‘e‘名字
names = [[Tom, Billy, Jefferson, Andrew, Wesley, Steven, 
Joe], [Alice, Jill, Ana, Wendy, Jennifer, Sherry, Eva]] li = [name for i in names for name in i if name.count(e)==2] print(li)

用列表推導式能夠構建的任何列表,用別的都可以構建。一行,簡單,感覺高端。但是不易排錯。

l2 = [python%s期%i for i in range(1,12)]
print(l2)

列表推導式有兩種模式:

1,循環模式,[經過加工的 i for i in 可叠代對象 ]

2,篩選模式,[經過加工的 i for i in 可叠代對象,if 條件語句篩選]

2, 生成器推導式

把列表解析的 [ ] 換成 ( ) 得到的就是生成器表達式。

l_obj = (python%s期%i for i in range(1,12))
print(l_obj)
print(l_obj.__next__())

3,字典推導式,

1,將dic的鍵和值對調。

mcase = {a:10,b:33}
mcase_frequency = {mcase[k]:k for k in mcase}
print(mcase_frequency)

2,合並大小寫對應的value值,將k統一成小寫

mcase = {a:10,b:33,A:8,Z:9}
mcase_frequency = {k.lower():mcase.get(k.lower(),0)+mcase.get(k.upper(),0)for k in mcase.keys()}
print(mcase_frequency)

4,集合的推導式

計算列表中每個值的平方,自帶去重功能

squared = {x**2for x in [1,-1,2]}
print(squared)

例1: 過濾掉長度小於3的字符串列表,並將剩下的轉換成大寫字母

例2: 求(x,y)其中x是0-5之間的偶數,y是0-5之間的奇數組成的元祖列表

例3: 求M中3,6,9組成的列表M = [[1,2,3],[4,5,6],[7,8,9]]

4-4日 列表推導式,生成器推導式