相关练习

1、处理文件,用户指定要查找的文件和内容,将文件中包含要查找内容的每一行都输出到屏幕

#比较 low 的方法
def check_file(filename,aim):
with open(filename,encoding='utf-8') as f: #句柄 : handler,文件操作符,文件句柄
for line in f:
if aim in line:
print(line.strip())
check_file('E:/py/log/log.txt','add') #生成器实现
def check_file(filename,aim):
with open(filename,encoding='utf-8') as f: #句柄 : handler,文件操作符,文件句柄
for line in f:
if aim in line:
yield line
g = check_file('E:/py/log/log.txt','add')
for i in g:
print(i.strip())

2、写生成器,从文件中读取内容,在每一次读取到的内容之前加上 ‘ *** ’ 之后再返回给用户

def check_file(filename):
with open(filename,encoding='utf-8')as f:
for i in f:
yield '***'+i.strip()
#g = check_file("E:/py/log/log.txt")
#for i in g:
# print(i) #也可以这样写
for i in check_file("E:/py/log/log.txt"):
print(i)

加上行号

def dir(url):
with open(url,encoding='utf-8')as f:
for index,i in enumerate(f,1):
yield "*%s* "%index + i.strip() d = dir('E:/py/log/log.txt')
for i in d:
print(i)

面试题

生成器相关的面试题

for 循环套生成器表达式的题,就把 for 循环拆开

题一:阅读下面代码,print 打印的结果是什么?

def demo():
for i in range(4):
yield i
g=demo() g1=(i for i in g)
g2=(i for i in g1) #print(list(g)) #list() 字符串强转
print(list(g1)) #[0, 1, 2, 3]
print(list(g2)) #[] #为什么 list(g2) 中会是空呢?
#因为:g1 里面的值已经悉数给到 list() 当 g2 在找 g1 要值时,g1 已经没值了 所以 g2 返回为空

题二:阅读下面代码,print 打印的结果是什么?

def add(n,i):
return n+i def test():
for i in range(4):
yield i g=test()
for n in [1,10,5]:
g=(add(n,i) for i in g) print(list(g)) #[15,16,17,18] """
#把以上的 for 循环拆开 在 g 这个未知数换成已知的
###很重要的一点 当 n=1,n=10 的时候,程序并没有执行,只是做了赋值的工作,就过去了
###那程序是什么时候开始取值的呢?在 list(g) 的时候才执行,这是时候的 n 就是最后一个 n 了
###前面的 n 已经消失了 n = 1
g=(add(n,i) for i in g) #g=test()
n = 10
g=(add(n,i) for i in g) #g=(add(n,i) for i in test()))
n = 5
g=(add(n,i) for i in g) #g=(add(n,i) for i in (add(n,i) for i in test()))) #组合起来就是
n = 1
g=(add(n,i) for i in test())
n = 10
g=(add(n,i) for i in (add(n,i) for i in test()))
n = 5
g=(add(n,i) for i in add(n,i) for i in (add(n,i) for i in test())) #结果为:g=[15,16,17,18]
"""

day 14 - 2 生成器练习的更多相关文章

  1. IntelliJ IDEA 14 注册码生成器

    IntelliJ IDEA 14 注册码生成器 文件为Java代码 自己编译运行里面的程序输入名称然后就生成注册码了工具:http://yun.baidu.com/s/1cZKsA部分工具生成的注册码 ...

  2. day 14 - 1 生成器

    生成器 生成器 生成器的本质就是迭代器生成器的表现形式 生成器函数 生成器函数 —— 本质上就是我们自己写得函数 生成器表达式生成器函数: 含有 yield 关键字的函数就是生成器函数 特点: 调用函 ...

  3. Python基础(生成器)

    二.生成器(可以看做是一种数据类型) 描述: 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我 ...

  4. Python2.4-原理之函数

    此节来自于<Python学习手册第四版>第四部分 一.函数基础 函数的作用在每个编程语言中都是大同小异的,,这个表是函数的相关语句和表达式. 1.编写函数,a.def是可执行代码,pyth ...

  5. WinForm GDI+自定义控件总结(一)

    前言 由于项目的原因好久没写博客了,也正是项目的原因开始系统的学习WinForm,从而接触到自定义控件的开发.自定义控件的开发有一定的难度,对开发者要求比较高,需要了解Windows运行的机制,熟悉w ...

  6. (转)用AGG实现高质量图形输出(三)

    转自 :http://www.cnblogs.com/CoolJie/archive/2011/04/27/2030260.html 线段生成器(Span Generator) 我们前面举的例子使用的 ...

  7. python核心编程第二版笔记

    python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d   提供调试输出1.2 –O   生成优化的字节码(生成 ...

  8. python核心编程--笔记

    python核心编程--笔记 的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找pyt ...

  9. Vegas Pro 15软件界面对比

    大家都知道Vegas是一款专业的视频制作软件,而新版的VEGAS Pro 15更是专业性十足.好了,废话不多说,接下来小编就带大家具体的看一下Vegas 15界面都有哪些更新吧! 一.软件图标 图1: ...

随机推荐

  1. Emit动态代理.NetCore迁移之旅

    [前言] 前面我们介绍了Aop 从静态代理到动态代理:https://www.cnblogs.com/7tiny/p/9657451.html 我们在.NetFramework平台下使用微软提供的Em ...

  2. Golang 入门 : 切片(slice)

    切片(slice)是 Golang 中一种比较特殊的数据结构,这种数据结构更便于使用和管理数据集合.切片是围绕动态数组的概念构建的,可以按需自动增长和缩小.切片的动态增长是通过内置函数 append( ...

  3. 03-JavaScript之数据类型

    JavaScript之数据类型 1.介绍 JavaScript数据类型分为两类:原始类型(primitive type)和对象类型(object type) 2.原始类型 数字 - number.字符 ...

  4. iOS 简易型标签的实现(UICollectionView)

    https://blog.csdn.net/sinat_39362502/article/details/80900984 2018年07月03日 16:49:05 Recorder_MZou 阅读数 ...

  5. Linux(Ubuntu 16) 下Java开发环境的配置(一)------JDK的配置

    前言: 本文介绍的是通用的安装方法,一般linux系统均可使用该方法安装.本文以Java8环境为例进行配置.   1.JDK的下载 进入java下载页(http://www.oracle.com/te ...

  6. Python——Pycharm基本设置

    一.,模板(加入中文UTF-8) #!/usr/bin/env python # -*- coding:utf-8 -*- 设置方法:file->settings->Editor-> ...

  7. 在本机使用虚拟机安装一个linux系统,并搭建ftp服务器

    一.Linux基础使用:linux服务器环境搭建(FTP服务器), 在本机使用虚拟机安装一个linux系统,并搭建ftp服务器,要求能使用ftp服务将本机文件到保存linux虚拟机上 资料: VMwa ...

  8. [LOJ2310][APIO2017]斑斓之地——可持久化线段树

    题目链接: [APIO2017]斑斓之地 将不是河流的格子染成白色,是河流的格子染成黑色,那么连通块数就是白色格子数$-1*2$的联通白色格子数$-2*1$的联通白色格子数$+2*2$的联通白色格子数 ...

  9. 2.4 random 模块

  10. Django 分页组件替换自定义分页

    Django的分页器(paginator) 总之不太好用我们还是用自己的好一些 自定义分页器 分页实现源码 """ 自定义分页组件 """ ...