检查元组中的顺序

时间:2014-07-05 23:37:03

标签: python sorting python-2.7

我从0到9得到一堆5个数字的元组。我想检查元组是按升序还是降序排序(即12345 02455 97311)。怎么可能呢?

4 个答案:

答案 0 :(得分:2)

试试这个

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 

答案 1 :(得分: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

答案 2 :(得分:0)

最简单的检查是:

ascending = x[0] < x[-1]

只有在您知道:

时才会有效
  • 元素是一个顺序或另一个顺序(即不是(1,3,2))
  • 至少有两个元素
  • 元素并非都具有相同的值

答案 3 :(得分: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'