美文网首页
【第13天】python全栈从入门到放弃

【第13天】python全栈从入门到放弃

作者: 36140820cbfd | 来源:发表于2019-08-09 19:35 被阅读0次

1. 生成器的3中创建方法

1.通过生成器函数(函数中包含了yield的就是生成器函数,注意:生成器函数被执行. 获取到的是生成器. 而不是函数的执行 )

2.通过生成器表达式创建生成器((结果 for 变量 in 可迭代对象 if 筛选))

3.通过数据转换

2. 了解return和yield的区别

return

代码块
def func():
    res=[]
    for i in range(10):
        res.append(i)
    return res

f=func()
print(f)    #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

yield

代码块
def func2():
    for i in range(10):
        yield i

f2=func2()
# print(f2)      #<generator object func2 at 0x007CAA70>
print(f2.__next__())  #0
print(f2.__next__())   #1
print(f2.__next__())    #2
print(f2.__next__())    #3

3. send()和.next()的区别

二者都可以让函数向下执行一步,但是send()中的括号还可以给yield赋值,第一个不能用send(),最后一个也不能用send()

代码块
def func():
    print('嫦娥妹子')
    a=yield  11
    print(a)
    print('后羿哥哥')
    b=yield  22
    print(b)
    print('跨服爷爷')
    yield 33

g=func()
print(g.__next__())
print(g.send('hello'))
print(g.send(666))

#执行结果:
# 嫦娥妹子
# 11
# hello
# 后羿哥哥
# 22
# 666
# 跨服爷爷
# 33

4. 生成器转换为列表

代码块
def func():
    yield 11
    yield 22
    yield 33
    yield 44
    yield 55

f=func()   #实例化,获取生成器
lst=list(f)   #把生成器转换为列表
print(lst)   #[11, 22, 33, 44, 55]

5. 生成一个1—14的列表

方法1:利用for循环

代码块
res=[]
for i in range(1,15):
    res.append(i)
print(res)

方法2:带有条件的列表推倒式

代码块
res=[i for i in range(1,15)]
print(res)

6. 寻找名字中带有2个h的名字

代码块
name=['wangsiyu','nezha','wahaha','huluhua']
for i in name:
    if i.count('h')==2:
        print(i)

7. 生成器表达式

代码块
res=('今天是我面试的第%s次'%i for i in range(1,20))
print(res)   #<generator object <genexpr> at 0x00E7AB70>,生成器地址
for i in res:
    print(i)

#结果如下
# 今天是我面试的第1次
# 今天是我面试的第2次
# 今天是我面试的第3次
# 今天是我面试的第4次
# 今天是我面试的第5次
# 今天是我面试的第6次
# 今天是我面试的第7次
# 今天是我面试的第8次
# 今天是我面试的第9次
# 今天是我面试的第10次
# 今天是我面试的第11次
# 今天是我面试的第12次
# 今天是我面试的第13次
# 今天是我面试的第14次
# 今天是我面试的第15次
# 今天是我面试的第16次
# 今天是我面试的第17次
# 今天是我面试的第18次
# 今天是我面试的第19次

8. 字典倒退式(将字典的key和value互换位置)

方法1

代码块
dic={'name':'wangsiyu','gender':'male'}
new={}
for k,v in dic.items():
    new[v]=k
print(new)

方法2

代码块
dic={'name':'wangsiyu','gender':'male'}
new={dic[k]: k for k in dic.keys()}
print(new)

9. 字典倒推式

代码块
lst1=['wangsiyu','linhao','qiujianfeng']
lst2=['8686','2475','3451']
dic={lst1[i]:lst2[i] for i in range(len(lst2))}
print(dic)    #{'wangsiyu': '8686', 'linhao': '2475', 'qiujianfeng': '3451'}

10. 集合倒推式

代码块
lst1=['wangsiyu','linhao','qiujianfeng''8686','2475','2475','3451']
set={i for i in lst1}
print(set)  #{'3451', 'linhao', 'wangsiyu', '2475', 'qiujianfeng8686'}
别跑,点个赞再走

相关文章

网友评论

      本文标题:【第13天】python全栈从入门到放弃

      本文链接:https://www.haomeiwen.com/subject/krtkjctx.html