记住一个原则在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返回
说白了就是一个是【】号,一个是()号。但是在实现是却有很大的不同。
从这里可以看出,它不像列表一样,当遇到很大的数据时必须创建一个很大的列表来存放东东,而生成器表达式就好像是一个懒惰的列表解析。
速度是大大的提高,大家可以用用试试!!
分享到:
相关推荐
总的来说,熟练掌握Python的列表推导式、迭代器、生成器和装饰器,能显著提升编程效率和代码质量,尤其是在处理大量数据或复杂逻辑时。在实际编程中,应根据具体需求灵活运用这些高级特性,以实现更加优雅、高效的...
生成器是Python中一种特殊的迭代器,通过`yield`关键字定义。它们允许函数暂停执行并在稍后恢复,而无需使用复杂的堆栈保存状态。这在处理大量数据或者需要按需生成结果时非常有用,因为它们占用的内存少,且可以与...
生成器函数通过使用`yield`关键字,可以暂停并恢复函数的执行,每次返回一个值。生成器函数简化了创建迭代器的代码,并且在处理大量数据时,由于其延迟计算的特性,可以有效地节省内存。生成器表达式是类似列表推导...
PHP中的生成器是一种特殊的函数,它允许你在调用时生成一个迭代器,即所谓的“惰性序列”。它最大的好处是能够在处理大量数据...在面对大容量数据集时,合理运用PHP生成器能够显著优化内存的使用和提升程序的响应速度。
在实际应用中,对于需要迭代的数据集非常大时,使用生成器的yield关键字可以显著提升程序性能,因为它允许你在处理大量数据时避免内存耗尽的风险。除了内存使用方面的优势,生成器还能使代码更加简洁易读,因为它...
在Web开发等场景中,使用生成器可以实现数据的“按需加载”,提高系统的响应速度。 ##### 3. 自动化测试 如文章中提到的自动化测试场景,生成器可以用来生成不重复的测试数据,确保每次调用都能获得新的数据点。 #...
生成器通过`yield`关键字来定义,使得函数可以记住上次执行的位置,并在下一次调用时从中断的地方继续执行。 ##### 1.1 `yield`关键字的基本用法 考虑以下代码片段: ```python def put_on(name): print(f"Hi {...
深入理解并熟练运用生成器和内存分配器,是提升程序性能和内存管理能力的关键步骤。在实际编程中,我们需要根据具体需求,灵活选择和设计适合的`generatorAllocator`方案,以实现最佳的程序性能和资源利用率。
`yield`是Python中的一种特殊语法结构,主要用于定义生成器(generator)。生成器是一种特殊的迭代器,它允许函数在其执行过程中暂停,并保存当前状态,以便在未来某个时刻继续执行。这种特性使得生成器非常适合用于...
yield 是 Python 生成器的关键字,用于将生成器的值返回给调用者。 十、用 Numba:一行代码将 Python 程序运行速度提升 100 倍 Numba 是一种高性能的编译器,允许开发者将 Python 代码编译成机器代码,从而提高 ...
通过yield关键字创建的生成器可以实现按需生成数据,避免一次性加载所有数据到内存,从而节省资源。在处理大规模数据集时,优先考虑使用生成器能有效提升程序性能。 最后,忽视性能测试和分析是优化过程中的大忌。...
在语言特性方面,Python 3.3.7增加了"yield from"语句,用于在一个生成器中嵌套另一个生成器。这简化了复杂的生成器代码,并允许生成器之间更高效地共享数据流。例如,通过使用"yield from",可以将一个大型生成器...
- **实现**:使用`yield`关键字创建生成器。这种方式能够显著降低内存占用,尤其是在处理大型数据集时非常有效。 - **示例**:比如,当需要计算一系列大数字的平方时,使用生成器比使用列表更节省内存。 2. **...
通过`yield`定义生成器函数,使用`next()`或for循环按需获取值,尤其适合处理大数据集。 6. **使用库和模块**:Python拥有众多优化过的第三方库,如NumPy用于数值计算,可以大幅提升性能。标准库如`itertools`和`...
此外,`yield from`表达式使得嵌套生成器更加简单,可以将一个生成器的完整流导入另一个生成器。 4. **asyncio模块**:Python 3.3引入了`asyncio`模块,这是Python异步I/O编程的基础框架,为编写并发代码提供了基于...
4. **yield from 语法**:这是一个新的语法,用于将一个生成器的输出无缝传递给另一个生成器,简化了复杂生成器的实现。 5. **新内置函数**: - `bytearrayformat()`:用于将字节数组转换为字符串,便于格式化输出...
- **yield from**:用于在生成器中嵌套另一个生成器,将子生成器的元素直接传递给父生成器。 3. **增强型赋值操作符**: Python 3.3引入了新的增强型赋值操作符,如 `*=`, `+=`, `%=`, 等,这些操作符可以同时...
同时,`yield from`表达式允许将一个生成器嵌套到另一个生成器中,简化了代码逻辑。 4. **字典增强**: Python 3.5.2的字典支持新的操作,如`.get()`方法现在可以接收多个默认值,`.popitem()`可以接受一个可选的...
在Python 3.5.3中,生成器可以使用`yield from`表达式来嵌套其他生成器,简化了代码并提高了效率。此外,生成器现在也可以通过`send()`方法接收值,增强了它们的交互性。 4. **字典(Dictionary)和集合(Set)...