Python论坛  - 讨论区

标题:[python-chinese] 频繁修改string,有没有高效的方法

2006年01月15日 星期日 00:15

yzhh yezonghui at gmail.com
Sun Jan 15 00:15:41 HKT 2006

python中string是immutable,所以下面的代码感觉效率有些低
for i in xrange(1000):
    s = s + 'something'
因为创建了和销毁了1000个string

能不能先做个够大的buffer,然后修改之,最后转换成string,好像
l = []*1000*9    # len('something') == 9
for i in xrange(1000): l[i*9:(i+1)*9] = 'something'
s = ''.join(l)
但是上面这个join()不是为这个目的做的,不知道效率是不是也一样低?
或者join()就是为这个目的做的,我想错了?

-- 
   regards,
yzhh


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年01月15日 星期日 03:46

shhgs shhgs.efhilt at gmail.com
Sun Jan 15 03:46:08 HKT 2006

StringIO和cStringIO


On 1/14/06, yzhh <yezonghui at gmail.com> wrote:
> python中string是immutable,所以下面的代码感觉效率有些低
> for i in xrange(1000):
>     s = s + 'something'
> 因为创建了和销毁了1000个string
>
> 能不能先做个够大的buffer,然后修改之,最后转换成string,好像
> l = []*1000*9    # len('something') == 9
> for i in xrange(1000): l[i*9:(i+1)*9] = 'something'
> s = ''.join(l)
> 但是上面这个join()不是为这个目的做的,不知道效率是不是也一样低?
> 或者join()就是为这个目的做的,我想错了?
>
> --
>    regards,
> yzhh
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年01月15日 星期日 08:43

Robert Chen search.pythoner at gmail.com
Sun Jan 15 08:43:55 HKT 2006

关于"+"操作符和join操作比较,可以参考《Python源码剖析》中的这篇关于字符串对象的文章:
http://blog.donews.com/lemur/archive/2005/12/22/667710.aspx


On 1/15/06, yzhh <yezonghui at gmail.com> wrote:
>
> python中string是immutable,所以下面的代码感觉效率有些低
> for i in xrange(1000):
>    s = s + 'something'
> 因为创建了和销毁了1000个string
>
> 能不能先做个够大的buffer,然后修改之,最后转换成string,好像
> l = []*1000*9    # len('something') == 9
> for i in xrange(1000): l[i*9:(i+1)*9] = 'something'
> s = ''.join(l)
> 但是上面这个join()不是为这个目的做的,不知道效率是不是也一样低?
> 或者join()就是为这个目的做的,我想错了?
>
> --
>   regards,
> yzhh
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060115/da16e559/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年01月15日 星期日 13:11

yzhh yezonghui at gmail.com
Sun Jan 15 13:11:18 HKT 2006

谢谢,这么说join已经是最快了

Robert Chen wrote:

> 关于"+"操作符和join操作比较,可以参考《Python源码剖析》中的这篇关于字符串对象的文章:
> http://blog.donews.com/lemur/archive/2005/12/22/667710.aspx

-- 
   regards,
yzhh


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年01月15日 星期日 13:25

yzhh yezonghui at gmail.com
Sun Jan 15 13:25:59 HKT 2006

又学到新东西了,呵呵

shhgs wrote:

> StringIO和cStringIO

-- 
   regards,
yzhh


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号