看板 Python 關於我們 聯絡資訊
再請教一下 如果我寫法並沒有先print出來 而是直接先存到var_a, 之後再印出來: s=map(lambda x : set(x), target.values()) var_a = reduce(lambda x,y: x.intersection(y), s) print(var_a) 這樣好像也是會有 TypeError 所以我不曉得我應該怎樣才可以用一個變數把它存起來 謝謝 ※ 引述《mikapauli (cablin)》之銘言: : ※ 引述《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. : 為此特地去下載3.2.2後我大概知道問題在那了.. : 你的寫法應該是 : s=map(lambda x : set(x), target.values()) : print(reduce(lambda x,y: x.intersection(y), s)) : var_a = reduce(lambda x,y: x.intersection(y), s) : 在python3中map的return是iterator : iterator介面的特點是"只能用一次" : 因此當你在第一個reduce用盡了s後 : 對第二個reduce而言s已經是空的iterator : 所以會出現Error -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.36.238