簡體   English   中英

將混合列表轉換為浮點數在python中

[英]convert mixed list to floats in python

我正在嘗試編寫一個將刪除非浮點數並將所有int轉換為浮點數的函數。 我在自己的調試過程中包含了一些打印語句。 我想要將“ .0”添加到int以返回列表的轉換。

std_in= ['1', '2', '2.1', 'ab1', '1ab']

結果['1','2','2.1']

所需的結果['1','2','2.1'] ['1','2','2.1']

def float_sort(std_in):
    float_sort = std_in
    sorted_float = ""
    float_sort = " ".join(float_sort)
    float_sort=re.findall(r"\b(^[+-]d+\e+\d+|\-\d+\.\d+|\-d+|\d+\.\d+|\d+)\b", float_sort)
    print(float_sort)
    [float(i) for i in float_sort]
    sorted_float = sorted(float_sort, key=len)
    print(type(sorted_float))
    sorted_float = " ".join(sorted_float)
    print(sorted_float)
    sorted_float = sorted_float.split()

嘗試以下代碼:

res = []
std_in = ['1', '2', '2.1', 'ab1', '1ab']

for i in std_in:
    try:
        res.append(float(i))
    except ValueError:
        pass

輸出:

>>> res
[1.0, 2.0, 2.1]

ettananyPatrick Haugh提供的兩個答案都不錯,但只是為了好玩,這是我的答案:

l = ['1', '2', '2.1', 'ab1', '1ab']

def float_generator(mylist):
    for n in mylist:
        try:
            yield float(n)
        except ValueError:
            pass

print list(float_generator(l))

您可以使用解析器功能,僅應解析數據的方法。

def parsefloat(str):
    try:
        return float(str)
    except ValueError:
        return False

然后,將parsefloart應用於列表的每個項目。

res = filter(lambda x: x, map(parsefloat, std_in))

如果要將輸出作為字符串:

def float_check(s):
    try:
        float(s)
        return True
    except ValueError:
        return False

l = ['1', '2', '2.1', 'ab1', '1ab']
print([i for i in l if float_check(i)])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM