看板 Python 關於我們 聯絡資訊
※ 引述《yauhh (小y寶貝)》之銘言: : ※ 引述《xatier (陪在妳身邊 :))》之銘言: : : 你的好做 : : (lambda s: : : lambda sFixed=s.rstrip('z'): : : lambda lz=len(s)-len(sFixed): : : (sFixed[:-1] + chr(ord(sFixed[-1])+1) if sFixed else 'a') + 'a'*lz) : : ('a')()() : def part_zs(s): : return s.rstrip('z'), (len(s)-len(s.rstrip('z'))) : def incaz((h, zn)): : return (h[:-1] + chr(ord(h[-1])+1) if h else 'a') + 'a' * zn : print(incaz(part_zs('au'))) : Functional Programming的重點在於函數本身要寫得短,而且函數主題明確。 : 的確一個函數可以寫成一行,但是,一個目標不見得要是一行完成。 : 其實寫一行或寫三行,所用到的函數一樣多,擠成一行照樣該跑多久就跑多久。 : 擠成一行甚至卻換來難以閱讀的問題。 亂入一個 perl 的.. :p (呣.. 因為好像沒有看到有人提供正規表達式作法, 等得心有點癢 ._.) 假設 $s 是放 input 字串, 例如 a, at, az, zzz 等等 $s =~ s(([^z])?(z*)$){ ($1 ? chr(ord($1)+1) : 'a') . 'a' x length $2 }e; 執行完以後把 $s 取代為 output 字串, 例如 b, au, ba, aaaa 這樣應該也可以算是一個 expression 哄? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.121.80.249 ※ 文章網址: http://www.ptt.cc/bbs/Python/M.1418486683.A.CF6.html
LiloHuang: 真是優雅的解法 :) 12/14 00:16
CindyLinz: 啊想到可以把 ($1 ? chr(ord($1)+1) : 'a') 換成 12/14 00:49
CindyLinz: chr(ord($1 // '`')+1) 利用 ` 是 a 的前一個字 :p 12/14 00:50
xatier: 解接亂入www 12/14 22:20
apua: chr(ord($1 || '`')+1) 似乎也可; Python 只能這樣縮 12/21 21:34
apua: (翻譯) 12/21 21:41
apua: __import__('re').sub( 12/21 21:41
apua: r'([^z])?(z*)$', 12/21 21:42
apua: lambda m: 12/21 21:42
apua: chr(ord(m.group(1) or '`')+1) + 12/21 21:42
apua: len(m.group(2))*'a', 12/21 21:43
apua: s) 12/21 21:43