1,列表推导式
值 for 循环
2,生成器表达式
g=(i fori inrange(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))