提高列表连接的速度?

时间:2011-07-29 18:37:45

标签: python string 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吗?感谢。

4 个答案:

答案 0 :(得分:2)

在面向性能的代码中,将2个字符串组合在一起并不是一个好主意,最好使用"".join(_items2join_)代替。 (我在那里找到了一些基准:http://www.skymind.com/~ocrow/python_string/

答案 1 :(得分:1)

因为访问python列表中的元素是O(1),并且将列表附加到另一个是O(1)(这可能是在python中连接字符串的时间复杂度),所提供的代码正在运行据我所知,尽可能快。 :)你可能负担不起,但是当我需要速度时,我需要处理那么多信息时使用C ++或其他一些编译语言。事情发展得更快。对于python中列表操作的时间复杂度,您可以访问以下网站:http://wiki.python.org/moin/TimeComplexity并在此处:What is the runtime complexity of python list functions?

答案 2 :(得分:1)

实际上不要创建列表对象。

使用生成器函数和生成器表达式。

def appender( some_list, some_text ):
    for item in some_list:
        yield item + some_text

appender函数实际上并不创建新列表。它避免了与创建新列表相关的一些内存管理开销。

答案 3 :(得分:0)

根据您对列表L的处理方式,可能有更好的方法。

例如,如果您正在打印它,这样的事情可能会更快。

打印“{0} {1} {2} {3} {4} {5}”。format(L [0],L [1],L [2],'prefix_text_to_item3',L [3] ,L [4])

程序后期L会发生什么?