[英]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]
ettanany
和Patrick 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.