三元表示式、列表推導式、生成器表示式
阿新 • • 發佈:2020-08-15
一、三元表示式
def max2(x,y): if x > y: return x else: return y # res =條件成立時執行的表示式 if 條件 else 條件不成立時執行的表示式 x=11 y=22 res=x*12 if x > y else y*100 print(res)
二、列表推導式
#1、示例 egg_list=[] for i in range(10): egg_list.append('雞蛋%s' %i) egg_list=['雞蛋%s' %i for i in range(10)] #2、語法 [expression for item1 in iterable1 if condition1 for item2 in iterable2 if condition2 ... for itemN in iterableN if conditionN ] 類似於 res=[] for item1 in iterable1: if condition1: for item2 in iterable2: if condition2 ... for itemN in iterableN: if conditionN: res.append(expression) #3、優點:方便,改變了程式設計習慣,可稱之為宣告式程式設計
三、生成式
l=[] for i in range(1,6): if i > 3: l.append(i) print(l) # 1、列表生成式 res=[i for i in range(1,6) if i > 3] print(res) # 2、集合生成式 res={i for i in range(1,6) if i > 3} print(res,type(res)) # 3、字典生成式 items=[("name","egon"),('age',18),('gender','male')] dict(items) res={k:v for k,v in items if k != "age"} print(res,type(res)) # 4、生成器表示式 res = (i for i in range(1, 6) if i > 3) print(res) print(next(res)) print(next(res)) print(next(res)) def my_sum(nums,res=0): for num in nums: res+=num return res
四、瞭解部分
1、map函式 salaries=[1000,2000,3000,4000,5000] res=map(lambda num:num*12,salaries) print(res) print(list(res)) print((num*12 for num in salaries)) 2、filter函式 names=['egon',"alex_dsb","liuqingzheng_dsb"] res=filter(lambda n:n.endswith("dsb"),names) print(res) print([name for name in names if name.endswith('瞭解:map、filter、reducedsb')]) 3、reduce函式 from functools import reduce res=reduce(lambda x,y:x+y,[1,2],100) print(res)