1. 程式人生 > >python 學習彙總34:生成器表示式( tcy)

python 學習彙總34:生成器表示式( tcy)

 生成器表示式 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]