我在循环中有一个名为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吗?感谢。
答案 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会发生什么?