如何快速合并列表中的列表?
除了循环,有没有更快的方法来实现一行合并列表中的列表?
比如这样的:
当然上面这样会报错。。
Solve
目前看来,最快的方法应该是:
可以用 timeit
模块进行验证:
解释
当有 L 个子串的时候用 +
,即 (sum
)的时间复杂度是 O(L**2)
,每次迭代的时候作为中间结果的列表的长度就会越来越长,而且前一个中间结果的所有项都会再拷贝一遍给下一个中间结果。所以当你的列表 I 含有 L 个子串,I 列表的第一项需要拷贝 L-1
次,而第二项要拷贝 L-2
次,以此类推总数为: I * (L ** 2) / 2
列表推导式(list comprehension
)只是生成一个列表,每次运行只拷贝一次(从开始的地方拷贝到最终结果)
Last updated
Was this helpful?