最“pythonic”的方法是什么?
x = some_value
bounds = [lower_bound, upper_bound]
if x < bounds[0]:
x = bounds[0]
if x > bounds[1]:
x = bounds[1]
答案 0 :(得分:4)
对我来说这看起来好多了
x = sorted([lower_bound, x, upper_bound])[1]
但是,如果您想考虑性能,那么if/elif
是最佳实现。
答案 1 :(得分:2)
你可以这样做:
x = max(min(some_value, upper_bound), lower_bound)
这是pythonic,因为它是一个简洁的单行内容,它比创建列表并对其进行排序更有效。
答案 2 :(得分:0)
...有时会因为找到一个棘手的方法而感到茫然 在一条线上的东西。
编程时最重要的是你真正理解你想要解决的问题。然后你想编写可以阅读的代码。所以,pythonic并不意味着它是一个单行...
这不是丑陋或糟糕的Python:
if x < lb:
x = lb
elif x > ub:
x = ub
这就是我建议写出Naman Sogani建议的方式。
_, x, _ = sorted([lb, x, ub])
答案 3 :(得分:-1)
如果您不在乎该值是什么,只要它在一定范围内:
>>> import random
>>> random.choice(range(lower_bound, upper_bound))