python 學習彙總34:生成器表示式( tcy)
阿新 • • 發佈:2018-11-19
生成器表示式 2018/11/15
# 生成器表示式用,圓括號只有一個引數的呼叫中可以省略括號
1.list,set引數為生成器
# 例項1:
data = 'golf'
list(data[i] for i in range(len(data)-1, -1, -1)) #['f','l','o','g']
# 例項2:
unique_words = set(word for line in page for word in line.split())#去除頁面文件重複字
2.函式引數為生成器:
# 例項1:
sum(i*i for i in range(5)) #30=1+2**2+3**2+4**2
# 例項2:
a1 = [10, 20, 30];a2 = [1, 10, 100]
sum(x*y for x,y in zip(a1, a2))#3210=10*1+20*10+30*100
# 例項3:
sin_table = {x: math.sin(x*math.pi/180) for x in range(0, 91)}
# 例項4: a=[('Tom1',14),('Tom2',13),('Tom3',12),('Tom4',11)] max(i for i in a) #('Tom4', 11) 等價max((i) for i in a) max((i[0], i[1]) for i in a)#('Tom4', 11) max((i[1], i[0]) for i in a)#(14, 'Tom1')
3.推導式中用生成器:
# 例項1:
def gener_fun(length=0):# 定義生成器函式
return (lambda x ,y, z: (x+y+z) *i for i in range(length)) #修改成生成器長度
# 呼叫:
a=[fun(1,2,3) for fun in gener_fun(4)] #g是一個函式
print(a) #[0, 6, 12, 18]