在我的数据分析中,函数返回单个float value
或tuple(float, ...)
。我想sum
或将其转换为list
或str
,以便我可以总结一下。但是,无论我尝试什么,我都会得到:
TypeError: 'float' object is not iterable
# For e.g
print('testing float errors')
ti = 0.236
print(ti)
print(type(ti))
print()
# all below three methods don't work. Why? And, what is the solution?
fi = [str(x) for x in ti]
fi = map(str(x), ti)
fi = sum(ti)
print(fi)
答案 0 :(得分:3)
你不能迭代一个浮点数,你只需要使用
if isinstance(ti, tuple):
fi = [str(x) for x in ti]
else:
fi = str(ti)
但是如果你有时候有一个浮点元组,你可以在使用isinstance之前检查它()
{{1}}
答案 1 :(得分:2)
按顺序回答你的问题:
我试图总结多个浮点数,否则保持浮点数。我只是想知道它为什么不起作用。
对于第一部分,总结多个浮点数或将其保存为浮点数,我会尝试这样的事情:
def sum_up(vals):
if isinstance(vals, tuple):
return sum(vals)
return vals
测试:
print('Single float as a param: ',sum_up(0.236))
print('Tuple of float as a param: ',sum_up((1.23, 1.23, 0.2366)))
输出:
Single float as a param: 0.236
Tuple of float as a param: 2.6966
第二部分,I am just trying to see why it's not working.
:
# all below three methods don't work. Why? And, what is the solution?
fi = [str(x) for x in ti]
fi = map(str(x), ti)
fi = sum(ti)
print(fi)
以上都不会起作用,因为你不能迭代一个数字而float不可迭代。 iterable的例子可以是元组,列表,或者在这里阐明iterable is
如果您已使用fi = [str(x) for x in ti]
更改fi = [x for x in str(ti)]
,那么您将拥有一个字符列表,您可以按照自己喜欢的方式操作它。
接下来,fi = map(str(x), ti)
更改为for e in map(str, list(ti)): ... # do something with e
。对于最后一个fi = sum(ti)
,您需要将ti
的值转换为可迭代,以便在其上调用sum()
。正如Azharullah Shariff提出了上述解决方案,它将有助于修复它。
答案 2 :(得分:1)
据我了解您的要求,我想这就是您想要做的事情:
形成浮点数中的字符列表,并对其中所有字符的数字进行求和。
如果是,那么这样做可以解决您的问题:
sum([int(x) for x in str(ti) if x.isdigit()])
答案 3 :(得分:1)
您可能需要测试输入以查看它是否为tuple
:
def sumOf(v):
if not isinstance(v,tuple):
v = (v,)
return sum(v)
ti = 4.5
print(sumOf(ti))
ti = (2.3, 2.2)
print(sumOf(ti))
输出:
4.5
4.5
<强>更新强>
对错误的解释:
ti = 4.5
fi = [str(x) for x in ti]
fi = [str(x) for x in ti]
TypeError: 'float' object is not iterable
错误位于理解的for x in ti
部分,因为ti
不可迭代。
ti = 4.5
fi = map(str(x), ti)
fi = map(str(x), ti)
NameError: name 'x' is not defined
这是x
未定义,因此无法调用str(x)
。
ti = 4.5
fi = sum(ti)
fi = sum(ti)
TypeError: 'float' object is not iterable
这里的错误是sum
期望迭代,你提供了一个浮动。