规范化概率的数字列表 - Python

时间:2016-02-23 16:47:15

标签: python-2.7

我正在尝试使用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'

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

所以你的代码工作正常,直到你用字符串替换列表中的数字。

明显的解决方法是将这些字符串转换为数字(使用float())。