各种推导式合集
推導(dǎo)式的套路
之前我們已經(jīng)學(xué)習(xí)了最簡(jiǎn)單的列表推導(dǎo)式和生成器表達(dá)式。但是除此之外,其實(shí)還有字典推導(dǎo)式、集合推導(dǎo)式等等。
下面是一個(gè)以列表推導(dǎo)式為例的推導(dǎo)式詳細(xì)格式,同樣適用于其他推導(dǎo)式。
variable = [out_exp_res for out_exp in input_list if out_exp == 2]out_exp_res: 列表生成元素表達(dá)式,可以是有返回值的函數(shù)。for out_exp in input_list: 迭代input_list將out_exp傳入out_exp_res表達(dá)式中。if out_exp == 2: 根據(jù)條件過濾哪些值可以。列表推導(dǎo)式
例一:30以內(nèi)所有能被3整除的數(shù)
multiples = [i for i in range(30) if i % 3 is 0] print(multiples) # Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27] 列表推導(dǎo)式1例二:30以內(nèi)所有能被3整除的數(shù)的平方
def squared(x):return x*x multiples = [squared(i) for i in range(30) if i % 3 is 0] print(multiples) 列表推導(dǎo)式2例三:找到嵌套列表中名字含有兩個(gè)‘e’的所有名字
names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]print([name for lst in names for name in lst if name.count('e') >= 2]) # 注意遍歷順序,這是實(shí)現(xiàn)的關(guān)鍵 嵌套列表推導(dǎo)式?
字典推導(dǎo)式
例一:將一個(gè)字典的key和value對(duì)調(diào)
mcase = {'a': 10, 'b': 34} mcase_frequency = {mcase[k]: k for k in mcase} print(mcase_frequency) 字典推導(dǎo)式1例二:合并大小寫對(duì)應(yīng)的value值,將k統(tǒng)一成小寫
mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3} mcase_frequency = {k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0) for k in mcase.keys()} print(mcase_frequency) 字典推導(dǎo)式2?
集合推導(dǎo)式
例:計(jì)算列表中每個(gè)值的平方,自帶去重功能
squared = {x**2 for x in [1, -1, 2]} print(squared) # Output: set([1, 4]) 集合推導(dǎo)式1?
練習(xí)題:
例1:? 過濾掉長(zhǎng)度小于3的字符串列表,并將剩下的轉(zhuǎn)換成大寫字母
例2:? 求(x,y)其中x是0-5之間的偶數(shù),y是0-5之間的奇數(shù)組成的元祖列表
例3:? 求M中3,6,9組成的列表M = [[1,2,3],[4,5,6],[7,8,9]]
1.[name.upper() for name in names if len(name)>3] 2.[(x,y) for x in range(5) if x%2==0 for y in range(5) if y %2==1] 3. [row[2] for row in M] code?
轉(zhuǎn)載于:https://www.cnblogs.com/liwenzhou/p/9762052.html
總結(jié)
- 上一篇: springboot-RequestMa
- 下一篇: flask框架基本使用(2)(响应与重定