2016-01-04 41 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

相关问题