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 协程究 ...
随机推荐
- Win10 jdk的安装以及环境变量的配置,及需要注意的坑
此篇文章献给自己,希望下次长点记性 最近本人终于有时间开始学习appium,并且开始在电脑上配置环境,第一步就是在我那刚装的Win10 系统上安装jdk,过程并不顺利,由于之前都是用的win7,几乎都 ...
- 005-环境安装【docker、fabric】
1.参考地址:https://hyperledger-fabric.readthedocs.io/en/latest/prereqs.html#install-curl 一.前置条件和系统配置 1.安 ...
- HDU4223:Dynamic Programming?(简单dp)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4223 求连续子序列和的最小绝对值,水题. #include <iostream> #inclu ...
- [转]C#读写远程共享文件夹
1.在服务器设置一个共享文件夹,在这里我的服务器ip地址是10.200.8.73,共享文件夹名字是share,访问权限,用户名是administrator,密码是11111111. 2.新建一个控制台 ...
- How to make TWebBrowser get focus in Delphi
How to make TWebBrowser get focus in Delphi Written by Administrator Tags: Delphi Twebbrowse ...
- UTC和时间相互转换
// ToLocalTime() UTC时间转换为本地时间 public static DateTime UtcToDateTime(long number) { , , , , , , ).AddS ...
- Oracle 在64位机器上使用plSQL连接Oracle的问题(SQL*Net not properly installed)
问题: 在64位机器上了64位的oracle客户端. 然后装上PL/SQL Developer,但是连接oracle老报这个错: Initialization error SQL*Net n ...
- java GC 回收机制 转
JVM分代垃圾回收策略的基础概念 由于不同对象的生命周期不一样,因此在JVM的垃圾回收策略中有分代这一策略.本文介绍了分代策略的目标,如何分代,以及垃圾回收的触发因素. 文章总结了JVM垃圾回收策略为 ...
- Mybatis${}、#{}及使用#{}时指定jdbcType
一.Mybatis 的Mapper.xml语句中parameterType向SQL语句传参有两种方式:#{}和${} 我们经常使用的是#{},一般解说是因为这种方式可以防止SQL注入,简单的说#{}这 ...
- Nginx进阶-不停服更新
前言 7*24小时不间断的提供对外服务和产品快速迭代是互联网行业的特征,基于需求所有的发布都不能停止当前对外的服务.本文围绕此话题衍生出,不停服上下线工具实现. 看本文前请先看 Nginx初识 Ten ...