`
乌拉蕾
  • 浏览: 72023 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

yield生成器 提升速度

阅读更多

记住一个原则在python中能简单就做到最简单。

 

这是修改后的代码:

 

sample= eval(open(Config.trainSample).read())

 

这是修改前的具有相同含义的代码:

 

       f=open(Config.trainSample,'r').readlines()
        s=f[0]
        count=0
        li=re.findall(r'\[(?P<tt>.*?)]',s,re.DOTALL)
        for x in li:
            t=[]
            for y in x.split(','):
                t.append(int(eval(y)))
            result.append(t)    

 

 先别理这个实现的功能是什么但是通过这样两端代码就可以发现python的优势(如果你发现的话)。

更重要的一点是前一段代码所用的实现功能是python2.0被加入的列表解析、这样已经比后一段代码提高了不少的效率。

 

生成器表达式是列表解析的一个扩展,这是python2.4时加入的,与列表解析器非常相似而且它们的基本语法相同。

主要是一个内存使用更友好的结构。

我们可以这样写

[x for x in obj if something]  #列表返回
或者
(x for x in obj if something)  #generator返回

 说白了就是一个是【】号,一个是()号。但是在实现是却有很大的不同。

从这里可以看出,它不像列表一样,当遇到很大的数据时必须创建一个很大的列表来存放东东,而生成器表达式就好像是一个懒惰的列表解析。

速度是大大的提高,大家可以用用试试!!

2
0
分享到:
评论

相关推荐

    详解Python3中yield生成器的用法

    任何使用yield的函数都称之为生成器,如: def count(n): while n &gt; 0: yield n #生成值:n n -= 1   另外一种说法:生成器就是一个返回迭代器的函数,与普通函数的区别是生成器包含yield语句,更简单点理解...

    Python中yield返回生成器的详细方法.pdf

    Python中yield返回生成器的详细方法

    举例详解Python中yield生成器的用法

    yield是生成的意思,但是在python中则是作为生成器理解,生成器的用处主要可以迭代,这样简化了很多运算模型(还不是很了解是如何简化的)。 yield是一个表达式,是有返回值的. 当一个函数中含有yield时,它不再是一个...

    python3.6生成器yield用法实例分析

    本文实例讲述了python3.6生成器yield用法。分享给大家供大家参考,具体如下: 今天看源码的时候看到了一个比较有意思的函数:yield 功能与return类似,都是返回定义的函数的一个结果,不同的是return返回后这次调用...

    Python yield生成器和return对比代码实例

    迭代是Python最强大的功能之一,是...生成器是特殊的迭代器 def gen_yield(): for i in range(1,10): for j in range(1,10): yield i+j # return i+j if __name__ == '__main__': aa = gen_yield() print(aa.__

    生成器yield分享.pptx

    描述了php7的一些新特性,方便学习与理解。有需要的同学可以下载观看。

    Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例

    本文实例讲述了Python 生成器,迭代,yield关键字,send()传参给yield语句操作。分享给大家供大家参考,具体如下: demo.py(生成器,yield关键字): # 生成器是一个特殊的迭代器。可以用for...in遍历。 # 带有...

    【JavaScript源代码】Javascript生成器(Generator)的介绍与使用.docx

    Javascript生成器(Generator)的介绍与使用  生成器是在函数内部运行的一些代码  返回值后,它会自行暂停,并且—— 调用程序可以要求取消暂停并返回另一个值  这种“返回”不是传统的从函数 return。所以它...

    使用C# yield关键字来提高性能和可读性

    使用C# yield关键字来提高性能和可读性

    简单了解python 生成器 列表推导式 生成器表达式

    生成器就是自己用python代码写的迭代器,生成器的本质就是迭代器。 通过以下两种方式构建一个生成器: 1、通过生成器函数 2、生成器表达式 生成器函数: 函数 def func1(x): x += 1 return x print(func1(5...

    Python中生成器和yield语句的用法详解

    但是有一些话题,大多数学生只有很少,或者完全没有任何接触,尤其是“生成器和yield关键字”。我猜这对大多数新手Python程序员也是如此。 有事实表明,在我花了大功夫后,有些人仍然不能理解生成器和yield关键字。...

    Python 中的生成器是什么,yield又是什么作用

    最近遇到好多python代码中使用yield的 code,表示的是一个函数是一个生成器。什么意思呢 简答就是说,如果一个函数中使用了yield 定义了一个语句,那么这个函数就不在是一个普通的函数,而是一个生成器,也就是说这...

    python生成器和迭代器区别

    一、生成器 1.1 什么是生成器 generator:一边生成一边计算后面元素的机制,称为生成器,生成器...带有yield的函数称为函数生成器 下面通过代码实现一个斐波那契数列(除第1个,第2个数外,其他的数都是前两个数相加) e

    Python生成器传参数及返回值原理解析

    生成器是到yield就返回yield之后的值,然后阻塞,等待next()/send()继续调起生成器 二.next()/send()的异同: next()/send()都可以调起生成器 next()只能调起生成器返回值,send()还可以对生成器进行传参数,与正常的...

Global site tag (gtag.js) - Google Analytics