对于某些坐标处理,我需要能够找到2个值之间的整数。我知道你可以使用range()
,但是即使你切换2个值我也需要它。 range(x, y)
不会提供与range(y, x)
相同的结果。这样做有诀窍吗?
编辑:Torxed的评论正是我所需要的:范围(min(x,y),max(x,y))
答案 0 :(得分:1)
建议使用3
个不同的选项:
正如@Torxed's comment
中提出的那样:
range(min(x, y), max(x, y))
正如@tobias_k's comment
中提出的那样:
range(*sorted([x, y]))
或者我的,使用ternary
条件:
range(x, y) if x < y else range(y, x)
答案 1 :(得分:0)
不太确定是什么问题,只是潦草地写了一些奇怪的代码。
这两种方法都有用,这取决于我们是否要保持“丢弃'b'”行为。
range(2,5)
#[2, 3, 4]
range(5,2,-1)
#[5, 4, 3]
range(5,2,2 * (5<2) - 1)
#[5, 4, 3]
##### Approach A
a = 5;b = 2
range(a, b, 2*(a<b) -1 )
#[5, 4, 3]
a = 2; b = 5
range(a, b, 2*(a<b) -1 )
#[2, 3, 4]
##### Approach B from @tobias_k
a = 5;b = 2
range(*sorted([a,b]))
#[2, 3, 4]
a = 2;b = 5
range(*sorted([a,b]))
#[2, 3, 4]