[英]Improve speed for list concatenation?
我在循环中有一个名为L的列表,它必须遍历数百万行。 突出的特点是:
for line in lines:
L = ['a', 'list', 'with', 'lots', 'of', 'items']
L[3] = 'prefix_text_to_item3' + L[3]
Do more stuff with L...
有没有更好的方法将文本添加到列表项,这将加快我的代码。 可以使用.join吗? 谢谢。
在面向性能的代码中,将2个字符串组合在一起并不是一个好主意,最好使用"".join(_items2join_)
。 (我在那里找到了一些基准: http : //www.skymind.com/~ocrow/python_string/ )
因为访问python列表中的元素是O(1),并且将列表附加到另一个是O(1)(这可能是在python中连接字符串的时间复杂度),所提供的代码运行速度与它一样快可以据我所知。 :)你可能负担不起,但是当我需要速度时,我需要处理那么多信息时使用C ++或其他一些编译语言。 事情发展得更快。 对于python中列表操作的时间复杂度,您可以访问以下网站: http : //wiki.python.org/moin/TimeComplexity ,这里: python列表函数的运行时复杂性是多少?
实际上不要创建列表对象。
使用生成函数和生成器表达式。
def appender( some_list, some_text ):
for item in some_list:
yield item + some_text
此appender
函数实际上不会创建新列表。 它避免了与创建新列表相关的一些内存管理开销。
根据您对列表L的处理方式,可能有更好的方法。
例如,如果您正在打印它,这样的事情可能会更快。
打印“{0} {1} {2} {3} {4} {5}”。format(L [0],L [1],L [2],'prefix_text_to_item3',L [3],L [ 4])
L后来在程序中会发生什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.