[討論] sum 跟產生器的結合用法

看板Python作者 (人,原來不是人)時間4年前發表 (2020/10/04 19:59), 4年前編輯推噓1(101)
留言2則, 1人參與, 4年前最新討論串1/1
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

10/05 10:50, 4年前 , 1F
這樣寫真的厲害 但要花一點時間才懂 尤其是理解in字串
10/05 10:50, 1F

10/05 10:50, 4年前 , 2F
是True
10/05 10:50, 2F
文章代碼(AID): #1VUYcBDg (Python)
文章代碼(AID): #1VUYcBDg (Python)