设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【每日一坑 3】 找数字

[复制链接]

0

主题

0

好友

134

积分

注册会员

Rank: 2

楼主
发表于 2013-12-21 00:41:29 |显示全部楼层
代码要简短,运行时间也很重要嘛~测试了一下运行时间,1000000次的测试正则要比遍历快5秒,不知道有没有更快的方法~
  1. import re
  2. from functools import partial#给函数传入参数的模块,具体还有什么作用也不清楚
  3. from timeit import Timer#python专用测试时间模块
  4. class C:#定义一个类,里面包含了从字符串取出数字的两个方法
  5.     def bianli(self,string):#遍历
  6.         dit=[]
  7.         for i in string:
  8.             if i.isdigit():
  9.                 dit.append(i)
  10.         new=''.join(dit)
  11.     def zhengze(self,string):#正则表达式
  12.         ne=re.findall(r'[\d|.]',string)

  13. if __name__=='__main__':
  14.     string = raw_input('string:')
  15.     bas=C()
  16.     t_bianli=Timer(partial(bas.bianli,string))#传入参数默Timer对象,第一个参数为需要测试的语句partial使得语句能够传入参数
  17.     t_zhengze=Timer(partial(bas.zhengze,string))
  18.     print t_bianli.timeit()#调用方法timeit默认运行100000次输出计算时间
  19.     print t_zhengze.timeit()
  20.     print t_bianli.repeat()#调用repeat方法默认测试3次,每次一百万次
  21.     print t_zhengze.repeat()
复制代码
回复

使用道具 举报

0

主题

0

好友

134

积分

注册会员

Rank: 2

沙发
发表于 2013-12-22 19:57:25 |显示全部楼层
crossin先生 发表于 2013-12-21 21:22
有意思。
如果正则compile之后再查找,应该会更快

应该怎么compile。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-7 19:09 , Processed in 0.019534 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部