一.协程函数的应用

写一个装饰器用于让协程函数不需要输入再执行一次next()函数

分析: 在装饰器中生成该协程函数的生成器, 并且执行一次next()函数

def firstNext(func):
def wrapper(*args, **kwargs):
g = func(*args, **kwargs)
next(g)
return g
return wrapper @firstNext
def eater(name):
print("{} start to eat".format(name))
food_list = []
while True:
food = yield food_list
print("{} eat {}".format(name, food))
food_list.append(food) g = eater("egon")
print(g.send("包子"))
print(g.send("炸酱面"))
 
二.面向过程编程

实现 grep -rl 'python' c:/test 的功能

  一个函数实现

import os

def search(dir_name, partten):
g = os.walk(dir_name)
res = {"",}
for i in g:
for j in i[-1]:
file_path = i[0] + "\\" +j
with open(file_path) as f:
for line in f:
if partten in line:
res.add(file_path)
for line in res:
if line:
print(line) search("c:\\test", "python") 利用生成器来处理
import os def firstNext(func):
def wrapper(*args, **kwargs):
g = func(*args, **kwargs)
next(g)
return g
return wrapper @firstNext
def search(target):
while True:
dir_name = yield
g = os.walk(dir_name)
for i in g:
for j in i[-1]:
file_path = i[0] + "\\" +j
target.send(file_path) @firstNext
def opener(target):
while True:
file_path = yield
with open(file_path) as f:
target.send((file_path, f)) @firstNext
def cat(target):
while True:
file_path, f = yield
for line in f:
target.send((file_path, line)) @firstNext
def grep(partten, target):
while True:
file_path, line = yield
if partten in line:
target.send(file_path) @firstNext
def printer():
while True:
file_path = yield
print(file_path) g = search(opener(cat(grep("python",printer()))))
g.send("c:\\test")
 
三.列表生成式,生成器表达式

列表生成式的具体形式

列表 = [处理变量形成列表元素 for循环 if判断 for循环2]  

  等同于

for循环
if判断
for循环
元素=表达式
    列表.append(元素)

  生成器表达式是 列表生成式的中括号编程圆括号

  其中获得的是一个生成器

  可以通过 list(获得的生成器) 来快速生成一个列表

python之列表和生成器表达式篇的更多相关文章

  1. python协程函数应用 列表生成式 生成器表达式

    协程函数应用 列表生成式 生成器表达式   一.知识点整理: 1.可迭代的:对象下有_iter_方法的都是可迭代的对象 迭代器:对象._iter_()得到的结果就是迭代器 迭代器的特性: 迭代器._n ...

  2. Py修行路 python基础 (十二) 协程函数应用 列表生成式 生成器表达式

    一.知识点整理: 1.可迭代的:对象下有_iter_方法的都是可迭代的对象 迭代器:对象._iter_()得到的结果就是迭代器 迭代器的特性: 迭代器._next_() 取下一个值 优点: 1.提供了 ...

  3. Python - 列表解析式/生成器表达式

    列表解析式: [expr for iter_var in iterable if cond_expr] 生成器表达式: (expr for iter_var in iterable if cond_e ...

  4. python 基础 列表生成式 生成器

    列表生成式 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式 举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, ...

  5. 列表生成式&生成器表达式

    一.列表生成式 def func(): return [lambda x:i*x for i in range(4)] print([j(2) for j in func()]) 结果:[6,6,6, ...

  6. Python开发基础-Day10生成器表达式形式、面向过程编程、内置函数部分

    生成器表达式形式 直接上代码 # yield的表达式形式 def foo(): print('starting') while True: x=yield #默认返回为空,实际上为x=yield No ...

  7. python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)

    1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退. 迭代器有两个基本方法:iter ,nex ...

  8. python之生成器(~函数,列表推导式,生成器表达式)

    一.生成器 概念:生成器的是实质就是迭代器 1.生成器的贴点和迭代器一样,取值方式也和迭代器一样. 2.生成器一般由生成器函数或者声称其表达式来创建,生成器其实就是手写的迭代器. 3.在python中 ...

  9. python基础17_列表推导式 vs 生成器表达式

    [ ] 列表推导式,是用简单的语法来生成列表, ( ) 生成器表达式,是用简单的语法创建个生成器. 外观上仅括号不一样. 虽然写起来方便,但是读起来稍显费力,另外,不易调试. # 列表推导式 prin ...

随机推荐

  1. PHP微信模板消息发送

    <?php class Wxtemplate extends Base { function __construct() { $this->appid = config('WXAPP_AP ...

  2. fputcsv导出大量数据

    <?php set_time_limit(0); ini_set('memory_limit', '128M'); $fileName = date('YmdHis', time()); hea ...

  3. [BJOI2018]双人猜数游戏

    题解: 彻彻底底的思维题???还是挺难的.. 首先连样例解释都没给..没看题解搞了很久 大概就是 一个人要根据另一个人的决策来猜数 可以去看洛谷那篇题解的解释 然后我们用$f[A/B][i][j][k ...

  4. [转]启动tensorboard

    https://vivekcek.wordpress.com/tag/tensorboard-windows/   Visualise Computational Graphs with Tensor ...

  5. asp.net core 自定义401和异常显示内容(JWT认证、Cookie Base认证失败显示内容)

    asp.net core 2.0使用JWT认证园子里已经有挺多帖子了,但开发中发现认证未授权情况下返回的401状态码是没有任何信息的,业务中可能有需要返回一串错误的Json信息.在这里我分享一个自定义 ...

  6. drone的pipeline原理与代码分析

    最近的一个项目,需要实现一个工作任务流(task pipeline),基于之前CICD的经验,jenkins pipeline和drone的pipeline进入候选. drone是基于go的cicd解 ...

  7. EF 数据版本号,处理具体使用方法 RowVersion / Timestamp 使用方法。进行自动处理并发修改

    /* * <div class="form-group"> // 原始 * <div class="form-group hidden"> ...

  8. Flink--输入数据集Data Sources

    flink在批处理中常见的source flink在批处理中常见的source主要有两大类. 1.基于本地集合的source(Collection-based-source) 2.基于文件的sourc ...

  9. 线程、进程、协程 异步io

    https://www.cnblogs.com/wupeiqi/articles/6229292.html

  10. Maya Max python PySide集成 shiboken版本对应关系

    Maya_Max _python_PySide集成_shiboken版本对应关系 1.如何查看 Maya Max 集成的 Python版本: Maya:在 Maya 的安装目录下的 bin 文件夹中找 ...