免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3059 | 回复: 5
打印 上一主题 下一主题

解析编码规则code='3-2-3-4' [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-04 14:01 |只看该作者 |倒序浏览
  1. code='3-2-3-4'
  2. s=code.split('-')
  3. r=[]
  4. r.append(0)
  5. for i in range(len(s)):
  6.     r.append(int(s[i])+r[i])
  7. del r[0]
  8. print r
复制代码
输出[3, 5, 8, 12]
有没有更简单的方法?python嘛就是要简单

论坛徽章:
0
2 [报告]
发表于 2011-02-05 02:29 |只看该作者
本帖最后由 a515200 于 2011-02-05 02:35 编辑
  1. def root(x,h='',y=0):
  2.     x1=[int(i) for i in x if i not in h]
  3.     while y<len(x1)-1:
  4.         r=x1[y+1]+x1[y]
  5.         x1[y+1]=r
  6.         y+=1
  7.     return x1
复制代码
参数h为要消去字符的集合,如果不需要消去则默认为空字符,因为我忘记什么内建方法可以消去字符x里的非数字字符了,用正则和循环会增加时间复杂度,就不用了

论坛徽章:
0
3 [报告]
发表于 2011-02-06 09:47 |只看该作者
恩有道理,谢谢
我的
  1. code='3-2-3-4'
  2. def coderule(rule):
  3.     s=rule.split('-')
  4.     r=[]
  5.     r.append(0)
  6.     for i in range(len(s)): r.append(int(s[i])+r[i])
  7.     del r[0]
  8.     return r
  9. a=coderule(code)
  10. print a

复制代码
这是我的方法

论坛徽章:
0
4 [报告]
发表于 2011-02-06 10:37 |只看该作者

  1. def q(string):
  2.     total=0
  3.     for num in string.split('-'):
  4.         total +=int(num)
  5.         yield total
  6.             
  7. print list( q('3-2-3-4') )
复制代码

论坛徽章:
0
5 [报告]
发表于 2011-02-06 17:49 |只看该作者
天呐,敬仰,

论坛徽章:
0
6 [报告]
发表于 2011-02-10 11:48 |只看该作者
看来我曲解LZ的意思了,应该这样做完美处理
  1. def root(x,y=0):
  2.     import re
  3.     x1=[int(i) for i in re.findall("\d+",x)]
  4.     while y<len(x1)-1:
  5.         r=x1[y+1]+x1[y]
  6.         x1[y+1]=r
  7.         y+=1
  8.     return x1
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP