将列表中的数字转换为在python

时间:2017-04-04 03:10:49

标签: python-3.x

假设我有一个包含类似元素的列表列表,例如

    [['string', 'string', 'number', 'number', 'number'], ['string', 'string', 'number', 'number', 'number']]

我如何才能将数字转换为浮点数?谢谢你的帮助。

编辑:
所以我有一个csv文件,其数据格式为这种方式。我通过将行作为列表列表来提取数据。当我最终将数据打印为格式化表时,我希望将数字格式化为舍入浮点数。

3 个答案:

答案 0 :(得分:1)

import numpy as np
f= [['1', '5', '8', '2', '7'], ['5', '8', '3', '7', '6']]
f=np.array(f,float)

输出

[[1,5,8,2,7][5,8,3,7,6]]

答案 1 :(得分:0)

您希望使用自定义函数遍历列表.dataset object

def traverse(o, tree_types=(list, tuple)):
    if isinstance(o, tree_types):
        for value in o:
            for subvalue in traverse(value, tree_types):
                yield subvalue
    else:
        yield o

这将确保无论您的列表如何嵌套,您都可以迭代所有项目

f=[['string', 'string', '4', '5', '6'], ['string', 'string', '7', '8', '9']]
print(list(traverse(f)))
['string', 'string', '4', '5', '6', 'string', 'string', '7', '8', '9']

接下来,您将要使用像is_number这样的函数的列表推导

def is_number(s):
    try:
        float(s)
        return float(s)
    except ValueError:
        return s

这将允许您浏览数组并仅将数字转换为实际数字

f=[is_number(x) for x in list(traverse(f))]
['string', 'string', 4.0, 5.0, 6.0, 'string', 'string', 7.0, 8.0, 9.0]

答案 2 :(得分:0)

假设所有元素都是string

a = ['a', '9.99']
[float(x) for x in a if not x.isalpha()]
# [9.99]

如果输入是嵌套列表,您可以先将其展平为this