检查元组中的顺序

2 投票
4 回答
3076 浏览
提问于 2025-04-18 12:14

我得到了很多包含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 

撰写回答