python基础之协程,列表生成式,生成器表达式
三元表达式
#三元表达式
name = 'alex'
name = 'egon'
res='SB' if name == 'alex'else 'shuai'
print(res)
#输出:shuai
for循环
egg_list=[] #空列表 for i in range(100): #for循环
egg_list.append('egg%s' %i) #追加到egg_list空列表中
print(egg_list)
#输出:['egg0', 'egg1', 'egg2', 'egg3',....'egg99']
列表生成式输出
l=['egg%s' %i for i in range(100) if i > 50]
print(l)
输出:['egg51', 'egg52', 'egg53', 'egg54', 'egg55',...'egg99']
l=[1,2,3,4] #定义一个列表
s='hello' #定义一个字符串
l1=[(num,s1) for num in l if num > 2 for s1 in s] #当列表里的数字大于2时,把列表里的所有数字与字符串里的所有字母组成元组,生成由元组组成的列表
print(l1)
[(3, 'h'), (3, 'e'), (3, 'l'), (3, 'l'), (3, 'o'), (4, 'h'), (4, 'e'), (4, 'l'), (4, 'l'), (4, 'o')]
------------------------------分割线------------------------------
l=[1,2,3,4]
s='hello'
l1=[]
for num in l:
for s1 in s:
t=(num,s1)
l1.append(t)
print(l1) #输出:
[(1, 'h'), (1, 'e'), (1, 'l'), (1, 'l'), (1, 'o'), (2, 'h'), (2, 'e'), (2, 'l'), (2, 'l'), (2, 'o'), (3, 'h'), (3, 'e'), (3, 'l'), (3, 'l'), (3, 'o'), (4, 'h'), (4, 'e'), (4, 'l'), (4, 'l'), (4, 'o')]
import os
g=os.walk('C:\\egon')
file_path_list=[]
for i in g:
print(i)
for j in i[-1]:
file_path_list.append("%s\\%s" %(i[0],j))
print(file_path_list) g=os.walk('C:\\egon')
l1=['%s\\%s' %(i[0],j) for i in g for j in i[-1]]
print(l1)
grep -rl(windows环境)
要求:在文件里递归找到关于包含“Python”内容的文件的绝对路径并打印出来
# 定义阶段
import os, time def init(func): # 装饰器的作用是使下面的生成器初始化,yield等着被传值
def wrapper(*args, **kwargs):
res = func(*args, **kwargs)
next(res)
return res
return wrapper @init
def search(target):
'''找到文件的绝对路径'''
while True:
dir_name = yield
print("search开始工作:文件的绝对路径")
time.sleep(2) # 加上等待时间是为了看着更有效果
g = os.walk(dir_name)
for i in g:
for j in i[-1]:
file_path = "%s\\%s" % (i[0], j)
target.send(file_path) # @init
def opener(target):
'''打开文件,读取文件句柄'''
while True:
file_path = yield
print("cat开始工作:读取文件内容")
time.sleep(2) # 加上等待时间是为了看着更有效果
with open(file_path,encoding="utf-8") as f:
target.send((file_path,f)) @init
def cat(target):
'''读取文件内容'''
while True:
file_path,f = yield
print("cat开始工作:读取文件内容")
time.sleep(0.3) # 加上等待时间是为了看着更有效果
for line in f:
target.send((file_path,line)) @init
def grep(pattern, target):
'''过滤一行内容中有需要的内容,就把路径传给下面'''
while True:
file_path,line = yield
print("grep开始工作:过滤内容")
if pattern in line:
target.send(file_path) @init
def printer():
'''打印文件路径'''
while True:
file_path = yield
print("printer开始工作:打印文件的绝对路径")
time.sleep(2)
print(file_path) #调用阶段
g = search(opener(cat(grep('python',printer()))))
g.send('C:\\egon')
打印C盘egon文件夹包含python的内容
python基础之协程,列表生成式,生成器表达式的更多相关文章
- python协程函数应用 列表生成式 生成器表达式
协程函数应用 列表生成式 生成器表达式 一.知识点整理: 1.可迭代的:对象下有_iter_方法的都是可迭代的对象 迭代器:对象._iter_()得到的结果就是迭代器 迭代器的特性: 迭代器._n ...
- Python基础之协程
阅读目录 一 引子 二 协程介绍 三 Greenlet模块 四 Gevent模块 引子 之前我们学习了线程.进程的概念,了解了在操作系统中 进程是资源分配的最小单位,线程是CPU调度的最小单位. 按道 ...
- python基础(35):协程
1. 前言 之前我们学习了线程.进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位.按道理来说我们已经算是把cpu的利用率提高很多了.但是我们知道无论是创建多进程还是创 ...
- Py修行路 python基础 (十二) 协程函数应用 列表生成式 生成器表达式
一.知识点整理: 1.可迭代的:对象下有_iter_方法的都是可迭代的对象 迭代器:对象._iter_()得到的结果就是迭代器 迭代器的特性: 迭代器._next_() 取下一个值 优点: 1.提供了 ...
- python基础之协程函数、列表表达式、生成器表达式
一.协程函数 协程函数的定义?如果在一个函数内部yield的使用方式是表达式形式的话,如x=yield,那么该函数称为协程函数 协程函数补充: def init(func): def wrapper( ...
- 列表生成式&生成器表达式
一.列表生成式 def func(): return [lambda x:i*x for i in range(4)] print([j(2) for j in func()]) 结果:[6,6,6, ...
- Python | 详解Python中的协程,为什么说它的底层是生成器?
今天是Python专题的第26篇文章,我们来聊聊Python当中的协程. 我们曾经在golang关于goroutine的文章当中简单介绍过协程的概念,我们再来简单review一下.协程又称为是微线程, ...
- Python中的协程,为什么说它的底层是生成器?
我们曾经在golang关于goroutine的文章当中简单介绍过 协程 的概念,我们再来简单review一下.协程又称为是微线程,英文名是Coroutine.它和线程一样可以调度,但是不同的是线程的启 ...
- [转载]Python 3.5 协程究竟是个啥
http://blog.rainy.im/2016/03/10/how-the-heck-does-async-await-work-in-python-3-5/ [译] Python 3.5 协程究 ...
随机推荐
- 什么是EJB
学习EJB可以加深对J2EE平台的认识. 百科定义EJB: 被称为java企业bean,服务器端组件,核心应用是部署分布式应用程序.用它部署的系统不限定平台.实际上ejb是一种产品,描述了应用组件要解 ...
- CentOS 6.5 QtCreator启动时 dbus-1的错误解决方法
启动QtCreator提示:dbus_connection_can_send_type的错误, QString::arg: Argument missing: 无法解析dbus_connection_ ...
- Tomcat 安装、配置与部署
Tomcat的官方网站:http://tomcat.apache.org/,目前最新版本为7.0. Tomcat下载地址: 1.32位:http://mirrors.tuna.tsinghua.edu ...
- springmvc ModelAndView
/** * 目标方法的返回值可以是 ModelAndView 类型. * 其中可以包含视图和模型信息 * SpringMVC 会把 ModelAndView 的 model 中数据放入到 reques ...
- PHP实现文件下载断点续传
<?php /* * PHP下载断点续传 * from:php100 */ function dl_file_resume($file){ //检测文件是否存在 if (!is_file($fi ...
- $微信小程序开发实践点滴——Bmob常用API的使用
Bmob后端云官网:http://www.bmob.cn/ Bmob后端云微信小程序开发文档:http://docs.bmob.cn/data/wechatApp/b_developdoc/doc/i ...
- mybatis 复习笔记01
本文内容转自传智播客笔记 1. 问题总结 1). 数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能. 设想:使用数据库连接池管理数据库连 ...
- pt-osc原理
pt-osc原理 1.检查设置环境 测试db是否可连通,并且验证database是否存在 SET SESSION innodb_lock_wait_timeout=1 //InnoDB事务等待行锁的超 ...
- Python3.x:定时自动发送邮件
定时自动发送邮件 一.简述 python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用.smtplib模块主要负责发送邮件,email ...
- Spring容器创建过程
Spring容器的refresh() 创建刷新 1 prepareRefresh() 刷新前的预处理 1) initProPertySources() 初始化一些属性设置: 子类定义个性化的属性 ...