我正在尝试使用Python规范化数字列表。我知道这个页面Normalizing a list of numbers in Python。
def normalize(lst):
s = sum(lst)
return map(lambda x: float(x)/s, lst)
raw = [[0.07, 0.14, 0.07], [0.10, 0.05, 0.05]]
for i in raw:
print normalize(i)
以上代码工作得很好。但是,我的数据采用以下格式:
raw1 = [['0.07', '0.14', '0.07'], ['0.10', '0.05', '0.05']]
for i in raw1:
print normalize(i)
而且,我收到了这个错误:
TypeError Traceback (most recent call last)
<ipython-input-39-96ae4b221f63> in <module>()
1 for i in raw1:
----> 2 print normalize(i)
<ipython-input-28-9ad45c58be20> in normalize(lst)
1 def normalize(lst):
----> 2 s = sum(lst)
3 return map(lambda x: float(x)/s, lst)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
有什么建议吗?
答案 0 :(得分:0)
所以你的代码工作正常,直到你用字符串替换列表中的数字。
明显的解决方法是将这些字符串转换为数字(使用float()
)。