在python中,如何将包含撇号和数字的列表转换为数字(例如['2,2.4,3']到[2,2.4,3])

在python中,如何将包含撇号和数字的列表转换为数字(例如['2,2.4,3']到[2,2.4,3]),python,python-3.x,python-2.7,numpy,scipy,Python,Python 3.x,Python 2.7,Numpy,Scipy,如何将包含撇号和数字的列表转换为数字,例如Python中的['2,2.4,3']到[2,2.4,3] 我试过这个: z = [float(x) if type(x) is str else None for x in ['1 2 3 4']] 您可以先检查数字是否为float或int,然后根据其类型进行转换: def flat(lst): result=[] for i in lst: if isinstance(i,str): for

如何将包含撇号和数字的列表转换为数字,例如Python中的['2,2.4,3']到[2,2.4,3]

我试过这个:

z = [float(x) if type(x) is str else None for x in ['1 2 3 4']]

您可以先检查数字是否为float或int,然后根据其类型进行转换:

def flat(lst):
    result=[]
    for i in lst:
        if isinstance(i,str):
            for item in i.split(','):

                if '.' in item:
                    result.append(float(item))
                else:
                    result.append(int(item))
    return result

print(flat(['2,2.4,3']))
输出:

[2, 2.4, 3]
[2.0, 2.4, 3.0]
如果您希望全部采用浮动方式,则:

def flat(lst):
    result=[]
    for i in lst:
        if isinstance(i,str):
            for item in i.split(','):
                result.append(float(item))
    return result

print(flat(['2,2.4,3']))
输出:

[2, 2.4, 3]
[2.0, 2.4, 3.0]

如果列表始终有一个字符串,则可以尝试以下操作:

>>> lst = ['2,2.4,3']
>>> result = [float(x) for x in lst[0].split(',')]
>>> print(result)
[2.0, 2.4, 3.0]
或者,如果您有多个字符串:

>>> lst = ['2,2.4,3', '2,3.4,5.3']
>>> result = [[float(x) for x in y.split(',')] for y in lst]
>>> print(result)
[[2.0, 2.4, 3.0], [2.0, 3.4, 5.3]]
如果要展平最终列表:

>>> import itertools
>>> print(list(itertools.chain.from_iterable(result)))
[2.0, 2.4, 3.0, 2.0, 3.4, 5.3]

您可以使用此通用解决方案:

import itertools

ll = ['2,2.4,3']

list(map(float, itertools.chain(*[str_.split(",") for str_ in ll])))
# [2.0, 2.4, 3.0]
因为您使用numpy标记,所以我假设您可以使用数组作为输出。在这种情况下,最简单的方法是使用np.fromstring:

除此之外,我建议您务必阅读并理解@Stefan Pochmann的评论。

尝试以下内容:-
您需要首先拆分列表z=[floatp for s in['2,2.4,3']for p in s.split',']或者如果外部列表始终是单个元素,z=[floatp for p in['2,2.4,3'].split',']listmapfloat,['2,2.4,3'][0]。split','这不是包含撇号和数字的列表,而是包含字符串的列表。
a = ['2,2.4,3']
for i in a:
    print list(eval(i))