用python计算2+4+6+…+20的值_Python运算符总结

本文探讨了Python中字符串拼接使用join和+操作符的效率差异。通过实验展示,join操作的时间复杂度接近O(n),而+操作的时间复杂度接近O(n^2),特别是在大量字符串拼接时,join的性能显著优于+。文章提供了一个简单的代码示例来衡量这两种方法的执行时间。
摘要由CSDN通过智能技术生成

建议:字符串拼接操作尽量多用join,而减少用”+“

join操作时会先计算字符操作所用到的空间总和大小,然后申请内存。然后进行字符串连接操作。所以join的时间复杂的近似O(n)。

+操作符连接操作符时,由于字符串是不可变对象,所以多个字符串拼接操作时从前向后的依此计算,用前一次的计算结果再和下一个字符串拼接。所以每次操作都需要申请一块新的内存。举例:S1+S2+S3+…Sn,实际过程是:1、先申请一块内存;2、将S1、S2复制到这块内存中(这样这块内存就是S1+S2);3、继续第一步申请内存;4、继续把第二步的内存内容和S3复制到第三步申请的内存。然后重复第一步到第二步至计算到Sn。所以操作符”+“的时间复杂的近似O(n^2)

对于不同个数字符串拼接操作时join和+所用时间对比(python2.7环境运行结果):

链接字符串数量

join操作消耗时间

+操作消耗时间

3

0.011083841323852539

0.02231597900390625

10

0.014094829559326172

0.05936312675476074

100

0.1445930004119873

0.6129770278930664

1000

1.340691089630127

6.07816481590271

10000

13.942554950714111

61.60126209259033

参考计算运算上面时间的代码:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import timeit

strlist = ["it is a value string will not keep in memorty" for n in range(100000)]

def join_test():

return ‘‘.join(strlist)

def plus_test():

result = ‘‘

for i,v in enumerate(strlist):

result = result + v

return result

if __name__ == ‘__main__‘:

x = [3,10,100,1000,10000]

jointd = {3:0,10:0,100:0,1000:0,10000:0}

plustd = {3:0,10:0,100:0,1000:0,10000:0}

for i in x:

jointimer = timeit.Timer("join_test()","from __main__ import join_test")

jointd[i] = jointimer.timeit(number=i)

plustimer = timeit.Timer("plus_test()","from __main__ import plus_test")

plustd[i] = plustimer.timeit(number=i)

print (‘join use time:\n‘,jointd)

print (‘plus use time:\n‘, plustd)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值