函數 三元表達式 列表生成式 字典生成式 生成器表達式
阿新 • • 發佈:2018-06-13
生成器 next 返回 生成 一個 Go pre 而是 def
1、三元表達式
針對 if 條件判斷的簡寫
可以比較下比如:
def max2(x,y): if x > y: return x else: return y max2(20,30) ================================================= x=10 y=20 res=x if x > y else y print(res)
真正的核心代碼從4條變成了一條就可以解決了
代碼形式:條件成立時的返回值 if 條件 else 條件不成立時的返回值
2、 列表生成式
也是簡寫代碼的一種
咱們按照上面的套路舉例
names=[‘jxx‘,‘yxx‘,‘cxx‘] #這是咱們之前學過的知識運用 l=[] for name in names: if name != ‘yxx‘: l.append(name + ‘SB‘) names=l #列表生成式 names=[name+‘SB‘ for name in names if name != ‘yxx‘] print(names)
代碼形式: [ 所要執行的代碼 左邊 for 循環 右邊 if 判斷]
3、字典生成器
在說字典解釋器之前我先介紹下一個函數
zip()稱之為拉鏈函數 故名思意 就是把兩個元素 鏈在一起
s1=‘hello‘ l1=[1,2,3,4,5] res=zip(s1,l1) #而res在python3中不是一個值而是一個叠代器對象 print(res) print(list(res)) 生成的是 [(‘h‘, 1), (‘e‘, 2), (‘l‘, 3), (‘l‘, 4), (‘o‘, 5)]
接下來我們來演示字典生成器
keys=[‘name‘,‘age‘,‘sex‘] values=[‘egon‘,18,‘male‘] #常規的代碼 d={} for k,v in zip(keys,values): d[k]=v print(d) #字典生成器的代碼 d={k:v fork,v in zip(keys,values)} print(d) 顯示的是 {‘name‘: ‘egon‘, ‘age‘: 18, ‘sex‘: ‘male‘}
4、生成器表達式
本身就是叠代器
l=[‘egg%s‘ %i for i in range(100)] print(l) 這個會直接把值全部打印出來 如果數據過大 會導致內存吃不消 g=(‘egg%s‘ %i for i in range(1000000000000)) print(g)#叠代器對象 print(next(g)) print(next(g)) 一個一個取出來
函數 三元表達式 列表生成式 字典生成式 生成器表達式