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)
要求:在文件里递归找到关于包含“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')
你现在所遭遇的每一个不幸,都来自一个不肯努力的曾经。大数据SRE(运维开发)学习交流群239963844
posted on 2017-04-12 16:53 bigdata_devops 阅读(257) 评论(0) 编辑 收藏 举报