将字符串列表转换为Int或Float

时间:2019-06-15 12:26:54

标签: python python-3.x list

我的列表为:

list = ['67.50', '70.00', '72.50', '75.00', '77.50', '80.00', '82.50']

我想检查字符串是否是foat,然后将其转换为float 如果该字符串是int,则应将其转换为int。

所需的输出:

list = [67.50, 70, 72.50, 75, 77.50, 80, 82.5]

4 个答案:

答案 0 :(得分:5)

您可以使用float.is_integer()

>>> lst = ['67.50', '70.00', '72.50', '75.00', '77.50', '80.00', '82.50']
>>> [int(x) if x.is_integer() else x for x in map(float, lst)]
[67.5, 70, 72.5, 75, 77.5, 80, 82.5]

答案 1 :(得分:2)

这是使用列表理解的一种方法,并检查将给定字符串转换为float的模运算符是0.0,然后将其转换为floatinteger。 / p>

还请注意,不可能直接使用内置的int函数从带小数的字符串中构造一个整数,以解决此问题,我正在使用f-strings,其中{{1 }}将给定数字打印为定点数字,在这种情况下,g小数点以下:

0

对于l = ['67.50', '70.00', '72.50', '75.00', '77.50', '80.00', '82.50'] [int(f'{float(i):g}') if float(i)%1 == 0. else float(i) for i in l] # [67.5, 70, 72.5, 75, 77.5, 80, 82.5] 下的python版本,请使用3.6进行字符串格式化:

.format

答案 2 :(得分:1)

这行得通,但是也许有更好的方法。它可以处理75.00这样的情况,您想将其转换为整数而不是浮点数。

from math import floor
list = ['67.50', '70.00', '72.50', '75.00', '77.50', '80.00', '82.50']
print([int(floor(float(l))) if float(l)-floor(float(l)) == 0 else float(l) for l in list])

输出为

python test.py
[67.5, 70, 72.5, 75, 77.5, 80, 82.5]

答案 3 :(得分:1)

这是另一个版本:

list = ['67.50', '70.00', '72.50', '75.00', '77.50', '80.00', '82.50']

new_list = []

for x in list:
    float_x = float(x)
    int_x = int(float_x)
    if int_x == float_x:
        new_list.append(int_x)
    else:
        new_list.append(float_x)

for y in new_list:
    print(type(y))

返回:

<class 'float'>
<class 'int'>
<class 'float'>
<class 'int'>
<class 'float'>
<class 'int'>
<class 'float'>