📜  检查列表是否按升序排列python(1)

📅  最后修改于: 2023-12-03 15:10:52.204000             🧑  作者: Mango

检查列表是否按升序排列

当我们需要检查一个列表是否按升序排列时,可以使用 Python 内置的 sorted() 函数。

方法一:使用 sorted() 函数
def is_sorted_asc(lst):
    """
    检查列表是否按升序排列

    Parameters:
        lst (list): 需要检查的列表

    Returns:
        bool: 如果列表按升序排列,返回 True,否则返回 False
    """
    return lst == sorted(lst)

这个函数接收一个列表参数 lst,使用 sorted() 函数对列表进行排序,再和原列表进行比较。如果两个列表相等,即原列表按升序排列,那么返回 True,否则返回 False。

使用方法:

lst = [1, 2, 3, 4, 5]
print(is_sorted_asc(lst))   # True

lst = [1, 3, 2, 4, 5]
print(is_sorted_asc(lst))   # False
方法二:手动比较相邻元素

我们也可以手动遍历列表每个相邻的元素,比较它们的大小关系来判断列表是否按升序排列。

def is_sorted_asc(lst):
    """
    检查列表是否按升序排列

    Parameters:
        lst (list): 需要检查的列表

    Returns:
        bool: 如果列表按升序排列,返回 True,否则返回 False
    """
    for i in range(len(lst)-1):
        if lst[i] > lst[i+1]:
            return False
    return True

这个函数遍历列表里除了最后一个元素以外的所有元素,比较相邻的元素大小。如果出现前一个元素大于后一个元素的情况,说明列表没有按升序排列,直接返回 False。如果遍历完整个列表没有出现这种情况,说明列表按升序排列,返回 True。

使用方法与上面的方法相同。

总结

以上两种方法都可以用来检查列表是否按升序排列。第一种方法使用内置的 sorted() 函数,比较简单,但是需要排序整个列表,因此时间复杂度为 O(nlogn);第二种方法只需要遍历整个列表一遍,时间复杂度为 O(n)。由于第二种方法不需要排序,因此在需要检查的列表比较大的情况下,效率会更高。