2015-04-20 57 views
0

在C++中,有一個vector :: reserve()可以在構建字符串時有效地分配內存。即使沒有它,我們也可以在O(n)中分攤一個字符串。使用不可變字符串構建高效字符串

我們如何高效地在字符串不可變的語言中構建字符串,比如python?一次添加原子的幼稚方法,在O(n)中的C++中工作正常,似乎是O(n^2),爲gc生成O(n^2)垃圾。

+0

在Python中,您通常使用'str.join()',它不會將一串字符串串聯在一起(至少在CPython中)。 – Blender

回答

1

在Python中處理這個問題的通常方法是生成一個字符串列表(或者使用一個生成器),並且調用join來合併它們。

final_string = ''.join(substring for substring in my_generator())