摘要: 下面这个错误是由于在正则[...]的内部,减号'-'是一个有特殊含义的字符(代表字符范围)所以如果需要在[...]内匹配减号'-',需要用反斜杠'\'转义.>>> import re>>> re.split(r'[+\-*/%]','+a-b-c')['', 'a', 'b', 'c']>>> re.split(r'[+-*/%]','+a-b-c')Tracebac 阅读全文
posted @ 2013-11-06 22:20 LisPythoniC 阅读(936) 评论(0) 推荐(0) 编辑
摘要: 是吗?def f(x,y,z): return x+y+zt=(200,300)print(f(1,2,3))print(f(1,*t))结果:>>> 6501这是我某个编程细节的简化版本..我原本打算这样做:def f(x,y,z): return x+y+zt=(200,300)print(f(1,2,3))y,z=tprint(f(1,y,z))但我想,万一Python支持这种写法呢?于是我尝试,果然能行!Python真是方便得... 阅读全文
posted @ 2013-11-06 21:28 LisPythoniC 阅读(680) 评论(0) 推荐(0) 编辑
摘要: 首先:def f(): print('first')def g(): f()g()def f(): print('second')g()结果:>>> firstsecond又来:def g(): f()g()def f(): print('second')g()结果:NameError: global name 'f' is not defined再来:def g(): f()def f(): print('second')g()结果:>>> second 阅读全文
posted @ 2013-11-06 21:23 LisPythoniC 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 几天前自己写了个将阿拉伯数字转为中文财务数字的程序.用的递归,不幸的是它是树形递归.虽然实际过程中不太可能出现金额数字大到让Python递归栈溢出,但是始终是一块心病,这玩意终究在理论上是受限制的.我持续地零散地思考过这个问题,今天终于将其一举拿下,并且还是两个版本,一个是函数式(尾递归),一个是命令式.总算是解决一个心病了.关键在于哪?原来的思路是从左到右转换数字,这种思路用树形递归表示并不难,但是你尝试转化为尾递归时会让你欲仙欲死..反正我是没有弄出来,还浪费了很多时间.不知怎么的,我突然想到尝试从右到左转换,一下子就豁然开朗了.我首先写出了个命令式版本,随后轻松翻译为尾递归版本..这让我 阅读全文
posted @ 2013-11-06 18:51 LisPythoniC 阅读(510) 评论(0) 推荐(0) 编辑
摘要: 不知哪儿看到一个说法,大概是当map的函数参数可以直接引用一个已有的函数变量时(比如内建函数int,str之类的),用map更优美些,否则还是用列表解析更直观和快速.我同意此说法.昨天在写一个函数时,最开始用的是map:def process_messages(arr,msgs,mode): return map(lambda msg:process_message(arr,msg,mode),msgs)可以看到,那个lambda显得笨拙而庞大.今天起来转念一想,用列表解析不是更好么:def process_messages(arr,msgs,mode): return [proc... 阅读全文
posted @ 2013-11-06 10:16 LisPythoniC 阅读(591) 评论(0) 推荐(0) 编辑