2016-01-04 40 views
0
for spamicities in sorted(map(lambda body: self.word_spamicity(body),re.sub("[^\w]", " ", body).split()) 
           ,key=lambda x: abs(0.5 - x),reverse=True)[0:38]: 
hamicities = map(lambda x: 1-x, spamicities) 

spamicities是float和我得到一個錯誤TypeError: 'float' object is not iterable我該如何修復我的代碼,以便可以迭代浮點數?

如何解決我的代碼?

回答

0

這將失敗:

spamicities = 1.0 
hamicities = map(lambda x: 1-x, spamicities) 

map僅適用於列表。所以,如果你想使用map,把你的浮動到一個列表:

spamicities = [1.0] 
hamicities = map(lambda x: 1-x, spamicities) # returns [0.0] 

一個更傳統的例子(多值列表):

spamicities = [1.0, 2.0, 3.0, 20.0] 
hamicities = map(lambda x: 1-x, spamicities) # returns [0.0, -1.0, -2.0, -19.0] 

我更新了我的問題有完整的代碼

擺脫你的for循環,因爲它遍歷你的列表返回sorted並給你一次浮動。你想整個列表,像這樣:

spamicities = sorted(map(lambda body: self.word_spamicity(body),re.sub("[^\w]", " ", body).split()),key=lambda x: abs(0.5 - x),reverse=True)[0:38] 
hamicities = map(lambda x: 1-x, spamicities) 
+0

但spamicities問題也使用地圖 – jason

+1

它不可能既是'map'對象和'float'。 – TigerhawkT3

+0

我使用完整的代碼更新了我的問題 – jason

相關問題