我有这个:
return html;
还有更多的pythonic吗?
答案 0 :(得分:5)
怎么样:
a = 1 if x < 1 else 10 if x > 10 else x
它提供了您想要的可读性而没有评论中版本的冗余。它是冗长的,因为它首先定义中心案例然后必须区分两端。这样做可以减少第一个结束,剩下的一切都在范围内。
答案 1 :(得分:4)
如果是数组,可以使用numpy.clip
。
否则,我认为您的解决方案是最好的解决方案。或者,您可以定义自己的函数,对单个元素执行相同的操作,如果您在多个位置执行此操作。
答案 2 :(得分:2)
您可能会考虑更多pythonic的另一种选择:
if x > 100:
x = 100
elif x < 1:
x = 1
答案 3 :(得分:2)
有点不同的东西:
a = (1, x, 100)[-(x<1)+1+(x>100)]
或者如果您将限制定义为
lo, hi = (1, 100)
a = (lo, x, hi)[-(x<lo)+1+(x>hi)]
或重新排列数据,看起来更优雅:
a = (x,lo,hi)[(x<lo)-(x>hi)]
这在python中是可能的,因为布尔值的行为类似于值0和1,允许[]
内的数学获得元组的正确索引。
答案 4 :(得分:-1)
a = x if x in range(1,100) else 1 if x < 1 else 100
你真的需要在1开始,并且在100开始?