# def fn(): # print("盲僧") # yield "瞎子" # print("狮子狗") # yield "辛巴" # print("螳螂") # yield "150斤的肥螳螂" # print("冰晶凤凰") # yield "冰鸟" # g=fn() # print(list(g)) # print(g.__next__()) # print(g.__next__()) # print(g.__next__()) # print(g.__next__()) # def fn(): # lst=[] # for i in range (1,146): # lst.append("英雄联盟第%s位英雄"%i) # return lst # # print(fn()) # def gn(): # i=1 # while i<146: # yield "英雄联盟第%s位英雄"%i # i=i+1 # g1=gn() # print(g1.__next__()) # print(g1.__next__()) # print(g1.__next__()) # lst=[] # for i in range(1,101): # lst.append(i) # print(lst) # lst=["python%s"%i for i in range(1,101)] # print(lst) # print(["python%s"%i for i in range(1,101)]) # print(["python%s"%i for i in range(1,101)]) # def fn(): # print(111) # yield 222 # g=fn() # g1=(i for i in g) # g2=(j for j in g1) # print(list(g)) # print(list(g1)) # print(list(g2)) #生成器函数 #yield与return的区别,return是返回结果停止调用;yield也是返回结果但是是分段调用 # def fn(): # print(111) # yield 222 # print(333) # a=yield 444 # print(a) # print(555) # yield 666 # g=fn() # print(list(g)) # print(g.__next__()) # print(g.__next__()) # print(g.send(11)) #__next__()与send的区别 # 都是传给下一个值,但是send不能用于第一个,它可以给yield赋一个值,最后一个也不能传,会报错 # 列表推导式: # 列表推倒式; 最终给你的是列表 # 语法 [最终结果(变量) for 变量 in 可迭代对象] # lst=[i for i in range(1,101)] # print(lst) #1-100能被3整除的数 # print([i for i in range (1,101) if i%3==0]) # #100以内能被3整除的平方 # print([i**2 for i in range (1,101) if i%3==0]) # names = [['Tom', 'Billy', 'Jefferson' , 'Andrew' , 'Wesley' , 'Steven' , # 'Joe'],'Alice',['Alice', 'Jill' , 'Ana', 'Wendy', 'Jennifer', 'Sherry' , 'Eva']] # print([name for i in names for name in i if name.count('e')>=2]) # 生成器表达式: # g=(i for i in range(1,101)) # print(list(g)) # 生成器的惰性机制: # def func(): # print(111) # yield 222 # g = func() # g1 = (i for i in g) # g2 = (i for i in g1) # # print(list(g))#111 [222] # print(list(g1))#[]生成器的惰性机制,若不调用不执行 # print(list(g2))#[] # 字典和集合的推导式: # dic={'a':'b','c':'d'} # # dic1={dic[key]:key for key in dic} # # print(dic1) lst=["盖伦","猴子","宝石"] lst1=["卡特","狐狸","ez"] print({lst[i]:lst1[i] for i in range (len(lst))}) # 关于生成器的一个面试题: # def add(a, b): # return a + b # def gen(): # for r_i in range(4): # yield r_i # g = gen() # # for n in [2, 10]:#n存在两种取值,2或者10 # g = (add(n, i) for i in g) #循环两次后n=10,g=(add(n, i) for i in (add(n, i) for i in g) ) # print(list(g)) #n的取值为最后一次循环的值,代入得20,21,22,23