看板 Python 關於我們 聯絡資訊
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