→ kadodo:的確就如你所說 不能用兩次 我先存起來 再印出來是可以的 02/21 15:31
※ 引述《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: 140.112.217.2