检查元组中的顺序
我得到了很多包含5个数字的元组,这些数字都是从0到9之间的。我想检查这些元组是按升序排列(比如12345)还是按降序排列(比如97311)。我该怎么做呢?
4 个回答
0
这个方法可以解决问题:
def which_order(t):
if tuple(sorted(t)) == t:
return 'ascending'
if tuple(sorted(t, reverse=True)) == t:
return 'descending'
return 'out-of-order'
0
最简单的检查方法是:
ascending = x[0] < x[-1]
这个方法只有在你知道以下几点时才有效:
- 元素的顺序是固定的,不能是像(1,3,2)这样的乱序
- 至少要有两个元素
- 元素的值不能完全相同
1
咱们就简单点,别搞复杂了。
# Returns 1 if ascending, -1 if descending and 0 if no order
def check_sorted(t):
assert len(t) >= 2
ascending = t[1] > t[0]
norm = lambda d : d if ascending else -d
for i in range(2, len(t)):
if norm(t[i] - t[i-1]) < 0:
return 0
return 1 if ascending else -1
3
试试这个
if some_tuple == tuple(sorted(some_tuple, reverse=True)):
# Order is Descending
elif some_tuple == tuple(sorted(some_tuple)):
# Order is Ascending
else:
# No order