# 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