好的,所以我正在定义一个函数,它接受可变数量的输入并钳位它们中的每一个
def clamp(*args):
return [ max(min(arg, 0.8), 0.2) for arg in args]
我喜欢这个函数的可读性:
a = 0.12
b = 0.45
c = 0.992
A,B,C = clamp(a,b,c)
print A,B,C
>> 0.2, 0.45, 0.8
这利用了 python 将列表自动解包为元组的优势。我遇到的麻烦是,如果我只给出一个参数,python 不会从列表中解压缩它,我会得到一个列表而不是浮点数,这很烦人。
print clamp(a)
>> [0.2]
到目前为止,我的解决方案是检查列表的长度并在只有一个元素时对其进行索引:
def clamp(*args):
result = [ max(0.2, min(0.8,arg)) for arg in args]
return result if len(result) > 1 else result[0]
a = 0.12
print clamp(a)
>> [0.2]
我的问题是,有没有更惯用的方法来做到这一点?