public class TestStr{
public static void main(String[] args){
StringBuffer buf = new StringBuffer();
int i;
for(i = 0; i < 100; i++){
buf.append("s");
}
String result = buf.toString();
System.out.println(result);
}
}
那在 python 中呢? python 中雖然無類似 StringBuffer 的物件,但是你可以使用 list 來代替。像這樣。
buf = []
for i in xrange(100):
buf.append('s')
ret = ''.join(buf)
print ret
先把要做相加的字串都先存到 list 裡,最後再用字串的join方法將它們合併成一個字串。這樣做可以減少不必要的物件產生,也可以加快速度( gc 要回收的物件少很多)
事實上,stringIO也可以做到類似的事情。只是我覺得用 list 就差不多了。 使用stringIO的例子如下
import StringIO
buf = StringIO.StringIO()
for i in xrange(100):
buf.write('s')
ret = buf.getvalue()
buf.close()
print ret
這2個語言我都會一些(Python喜歡多些),我從來沒考慮到由於程式產生過多的暫時性物件,而導致gc的忙碌。這文章讓我學到東西,謝謝 :-)
回覆刪除