看板 Python 關於我們 聯絡資訊
建議你把完整的code從頭到尾貼上來,或是直接找個空間上傳你的檔案 另外 (lambda x: set(x))==set (lambda x,y: x.intersection(y))==set.intersection 這裡用lambda非常多餘 加上set.intersection本身就可以接受多個參數 因此寫成set.intersection(*map(set, target.values()))就好 ※ 引述《kadodo (想辦法突破)》之銘言: : s=map(lambda x : set(x), target.values()) : print(reduce(lambda x,y: x.intersection(y), s)) : 以上這樣OK 有PRINT出正確結果 : s=map(lambda x : set(x), target.values()) : var_a = reduce(lambda x,y: x.intersection(y), s) : print(var_a) : 換成以上三行,想用一個變數去接 就會得到以下錯誤 : var_a = reduce(lambda x,y: x.intersection(y), s) : 錯誤訊息 : TypeError: reduce() of empty sequence with no initial value. : ※ 引述《kadodo (想辦法突破)》之銘言: : : 再請問一下 : : 我想用一個變數來接 : : var_a = reduce(lambda x,y: x.intersection(y), s) : : TypeError: reduce() of empty sequence with no initial value. : : 請問該如何解決? : : 我用Help去看 還是看不懂 : : reduce(function, sequence[, initial]) -> value : : Apply a function of two arguments cumulatively to the items of a sequence, : : from left to right, so as to reduce the sequence to a single value. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.217.2
kadodo:請問set.intersection(*map(set, ds.values())) 這行是什麼 02/21 15:29
kadodo:意思呢? 尤其是那個*號 02/21 15:30
mikapauli:f(a,b,c,...)==f(*(a,b,c,...)) 02/21 18:03
mikapauli:map前的*即是把map產生的iterator做unpack的動作 02/21 18:14
kadodo:請問我如果是要得到聯集怎麼寫? 先前討論是得到交集的寫法 02/21 18:40
kadodo:用set.union嗎? 02/21 19:37
mikapauli:是的 02/21 21:08
mikapauli:另外在一般的運算可以用&(交集)和|(聯集)等來寫 02/21 21:10
mikapauli:set.__and__==set.intersection, set.__or__==set.union 02/21 21:11
kadodo:感謝幫忙 ~ 我會試試看 02/21 22:45
mikapauli:另外,這裡如果有需要用lambda,那還不用comprehension 02/23 01:15
mikapauli:真正要lambda的地方大概是讓常數有函式介面(變成常函式) 02/23 01:17
mikapauli:更正,不如用comprehension 02/23 18:06