加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python:生成器进阶

发布时间:2020-12-17 00:00:32 所属栏目:Python 来源:网络整理
导读:1,列表推导式? 值 for 循环 2,生成器表达式 g=(i for?i in?range(10)) print(g) for i in g: ? ? print(i) 3,列表推导式与生成器表达式的区别 #括号不一样 #返回值不一样? ===》生成器表达式几乎不占内存 g =('鸡蛋%s'%i for i in range(10)) print(g) for

1,列表推导式?

值 for 循环

2,生成器表达式

g=(i for?i in?range(10))

print(g)

for i in g:

? ? print(i)

3,列表推导式与生成器表达式的区别

#括号不一样

#返回值不一样? ===》生成器表达式几乎不占内存

g =('鸡蛋%s'%i for i in range(10))

print(g)

for i in g:

  print(i)

4,各种推导式

1)列表推导式:

[每一个元素或者是和元素相关的操作? for? 元素? in? 可迭代数据类型]? ? ? ?#遍历之后挨个处理

names = [[,,,,,,,,,,,,<span style="color: #0000ff">print([name <span style="color: #0000ff">for lst <span style="color: #0000ff">in names <span style="color: #0000ff">for name <span style="color: #0000ff">in lst <span style="color: #0000ff">if name.count(<span style="color: #800000">'<span style="color: #800000">e<span style="color: #800000">') >= 2]) <span style="color: #008000">#<span style="color: #008000"> 注意遍历顺序,这是实现的关键

2)列表推导式(筛选功能):

[满足条件的元素相关的操作 for 元素 in 可迭代数据类型 if 元素相关的条件]? ?#筛选功能

3)生成器推导式:

(满足条件的元素相关的操作 for 元素 in 可迭代数据类型 if 元素相关的条件)

4)字典推导式:

例一:将一个字典的key和value对调

mcase = {: 10,: 34= {mcase[k]: k k (mcase_frequency)

例二:合并大小写对应的value值,将k统一成小写

mcase = {: 10,: 34,: 7,: 3= {k.lower(): mcase.get(k.lower(),0) + mcase.get(k.upper(),0) k (mcase_frequency)

5)集合推导式:

squared = {x**2 x [1,-1,2

5,移动平均值

= 0.0=== +=+= 1= total/g_avg =<span style="color: #000000"> averager()
next(g_avg)
<span style="color: #0000ff">print
(g_avg.send(10<span style="color: #000000">))
<span style="color: #0000ff">print
(g_avg.send(30<span style="color: #000000">))
<span style="color: #0000ff">print
(g_avg.send(5))

6,预激生成器的装饰器

init(func): inner(*args,**= func(*args,**@init
<span style="color: #0000ff">def
<span style="color: #000000"> averager():
total
= 0.0<span style="color: #000000">
count
=<span style="color: #000000"> 0
average
=<span style="color: #000000"> None
<span style="color: #0000ff">while
<span style="color: #000000"> True:
term
= <span style="color: #0000ff">yield
<span style="color: #000000"> average
total
+=<span style="color: #000000"> term
count += 1<span style="color: #000000">
average = total/<span style="color: #000000">count

g_avg =<span style="color: #000000"> averager()
<span style="color: #008000">#<span style="color: #008000"> next(g_avg) 在装饰器中执行了next方法
<span style="color: #0000ff">print(g_avg.send(10<span style="color: #000000">))
<span style="color: #0000ff">print(g_avg.send(30<span style="color: #000000">))
<span style="color: #0000ff">print(g_avg.send(5))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读