繁体   English   中英

提高列表连接的速度?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM