我有一个包含字母,字符和数字的字符串的列表:
list = ['hello', '2U:', '-224.3', '45.1', 'SA 2']
我想只保留列表中的数字并将其转换为float
值。我怎样才能做到这一点?我希望列表看起来像这样:
list = ['-224.3'. '45.1']
当我从Arduino执行serial.readline()时创建列表,它给出了一个由命令和数据点组成的字符串。所以我看起来像这样:
'hello,2U:,-224.3,45.1,SA 2'
我做了一个list.split(delimiter =','),并希望只有数据点供将来计算。
答案 0 :(得分:2)
查看字符串是否可以投射到> F<- function(x){
+ beta* x + alpha
+ }
> alpha <- 1
> beta <- 2
> optimize(F,c(10,20))
$minimum
[1] 10.00006
$objective
[1] 21.00011
的最佳方法可能只是float
来投射它。
try
之后,res = []
for x in lst:
try:
res.append(float(x))
except ValueError:
pass
为res
将其转换为float并返回True,否则返回False。如果你只需要一次,那么循环就会缩短。
答案 1 :(得分:0)
您可以尝试以下内容 -
def isNum(s):
try:
float(s)
return True
except ValueError:
return False
lst = ['hello', '2U:', '-224.3', '45.1', 'SA 2']
bools = list(map(lst,isNum))
deleted = 0
for idx, val in enumerate(bools):
if val:
continue
else:
del lst[idx-deleted]
deleted = deleted + 1
修改强>
或者您可以使用
def isNum(s):
try:
float(s)
return True
except ValueError:
return False
lst = ['hello', '2U:', '-224.3', '45.1', 'SA 2']
lst = list(filter(isNum, lst))