python字符串切片详解,python中的字符串切片操作

  python字符串切片详解,python中的字符串切片操作

  我有一根5 * 10 ^ 6长的大弦。在

  我做了一些处理,把它分成16个字符的块。自定义函数用于拆分字符串。假设性能优于向导方法。在

  其功能如下。去拼接分离器:

  总和=0

  威廉0:

  block=s[:16]

  # assumingtheprocesstobedonewithtablelockisculating itslength .

  是sum=Len(block)

  s=s[16:]

  返回并

  和自定义功能:

  ^{pr2}$

  我用cProfiler测试了它们。结果如下。Stringlength(以秒为单位的时间)

  -请参考

  5000000 289.0 1.274

  500000 0.592 0.134

  50000 0.25 0.28

  5000 0.001 0.003

  我生成的字符串如下。s=“”。join ([ str (random.randint (1,9 ) ) forxinxrange ) 500000)

  我的问题:你有和定制的正则分配器一样或者更高效的Python表达式吗?有时候会先把整个字符串拆分保存在列表中,然后再进行迭代运算。在

  为什么分线器适合小琴弦?(只是对这个感兴趣)

  注意:我必须运行的流程(数据)没有返回值。在

  编辑

  使用让步和改进的拼接分路器,性能结果如下:字符串长度/拼接分路器

  -请参考

  5000000 0.148 1.274 0.223

  500000 0.016 0.134 0.29

  50000 0.003 0.28 0.005

  5000 ~0.000 0.003 ~0.000

  代码:定义打印程序:

  gen=(s [ I : I 16 ] foriinxrange (0,Len),16))

  总和=0

  对于gen中的数据:

  Is sum=Len(数据)

  返回并

  去拼接分离器:

  总和=0

  forxinxrange(0,Len ) s,16):

  block=s[x:x 16]

  # assumingtheprocesstobedonewithtablelockisculating itslength .

  是sum=Len(block)

  返回并

  性能提高的原因:Splice Splitter使用sprite为每次迭代重复创建新字符串。正如s=s[16:]wxdxtg在回答中指出的。这就导致了~o(n) 2的时间复杂度。在

  当s[x:x 16]代替重复创建字符串s时,代码的复杂度将降低到o(n*16),从而大大提高了性能。Yield/Generator函数执行相同的操作((pythonicSplitter())),但是调用生成器(迭代器),所以完成操作所需的时间由

  普通分割器也在做同样的事情,制作长度为16的块。但是,因为Python字符串是不变的,所以创建这些块的时间复杂度要比内置的优化切片函数高得多。在

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: