作者art1 (人,原來不是人)
看板Python
標題[討論] sum 跟產生器的結合用法
時間Mon Oct 5 03:59:04 2020
def stringLenCJK(string):
# return string len including double count for double width characters
return sum(1 + (unicodedata.east_asian_width(c) in "WFA") for c in string)
在尋找計算雙位元字的字串長度方法時,看到這個程式碼
研究了一下發現(unicodedata.east_asian_width(c) in "WFA") for c in string 是
一個產生器,而 sum 的參數說明裏面有提到可以用 iterable
兩者結合的語意就變成把字串中的每一個字餵給 east_asian_width,如果
east_asian_width 回傳的結果是 "W" 或 "F" 或 "A" 的話,就讓總和 +2,否則 +1
完全想不到可以這樣寫,第一眼看上去似懂非懂,要研究了才知道其奧妙
感覺一些計算字元相關的東西都可以這樣寫的樣子
--
「看在上帝的份上,我們不能當著孩子的面槍殺他的父親!」
「那我們就連孩子一起幹掉!」
「第一槍打中的是那個天真的孩子,第二槍是抱著孩子的母親。第三槍
停頓了三秒,當難以致信的父親擦拭著臉上愛子的腦漿從震驚中醒轉
過來,慢慢的轉頭看向停車的地方,分辨出是誰在攻擊他後,第三顆
子彈才將他的腦殼打飛。」 ─摘自〈狼群〉
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.173.42.118 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1601841547.A.36A.html
※ 編輯: art1 (218.173.42.118 臺灣), 10/05/2020 04:05:20
推 TitanEric: 這樣寫真的厲害 但要花一點時間才懂 尤其是理解in字串 10/05 10:50
→ TitanEric: 是True 10/05 10:50