我正在通过函数运行多个浮点数以生成科学记数法 . 但是,并非所有浮动都始终放入(它是随机的)因此会产生错误 .
输入:
a0,hvt,at,lambd = signify(a0,hvt,at,lambd)
功能:
def signify(*args):
rst = []
for arg in args:
if arg >= 100.0 or arg <= 0.01:
arg = '{:.2e}'.format(arg)
rst.append(arg)
return rst
换句话说,'rst'并不总是由四个元素组成(感谢指出Singh) .
有人愿意指出我正确的方向吗?
1 回答
我不认为你完全理解错误是什么 . 你能发布错误信息吗?
我怀疑你试图分配
a0,hvt,at,lambd = signify(a0,hvt,at,lambd)
是真正的罪魁祸首,如果"rst"从函数返回没有4个元素怎么办?左侧的语法强制将右侧的列表精确地解压缩为4个元素,并在不匹配时引发ValueError: too many values to unpack (expected 4)
.尝试
result = signify(a0,hvt,at,lambd)
并检查输出 .更新:
如果你只想修改4个术语中的一些但允许其余部分按原样传递,你只需要一个其他部分 . 以下是您如何看待整个过程 .
我们可以改进这一点 .
但是,这基本上与在所有args上应用函数相同 . 我们可以创建一个强调这种“一步到位”方法的功能 .
但这让我们意识到这只是一个if-else声明 . 他们不一定是丑陋的 . (PS . 最后一行是list comprehension.)
条件可以稍微调整一下,以便让我们更清晰地理解 . 请注意,如果您愿意,也可以将它们写在一行中 .
您可以使用任何看起来最干净的样式,或者探索并找到更好的东西 . 只需将它应用于您的案例 .