Python 如何测试列表是否按升序排序

Python 如何测试列表是否按升序排序,python,Python,这就是练习的问题:编写一个函数,检查列表是否按升序排序 def ascending(lst): for k in range(0,len(lst)): if lst[k] < lst[k+1]: print('Ok') else: print('NOk, the number ' + str(lst[k]) + ' is greater than his next ' + str(lst[k+1]))

这就是练习的问题:编写一个函数,检查列表是否按升序排序

def ascending(lst):
    for k in range(0,len(lst)):
        if lst[k] < lst[k+1]:
            print('Ok')
        else:
            print('NOk, the number ' + str(lst[k]) + ' is greater than his next ' + str(lst[k+1]))
    return 'Bye!'

lst = [1,3,2,4,5]
print(ascending(lst))
def升序(lst):
对于范围(0,len(lst))内的k:
如果lst[k]
我期望输出:好的,好的,不,数字3比他的下一个2大,好的。。。我明白了,但是,在问题的最后,错误消息显然是“IndexError:列表索引超出范围”。我知道问题在if语句的末尾,因为对于k=4,k+1=5(超出范围),但我不知道如何解决它。

您的问题在这里:

for k in range(0,len(lst)):
    if lst[k] < lst[k+1]:
另一种方法: 如果您的任务像“测试列表是否按升序排序”这样简单;那么一个简单的函数怎么样,比如:

def issorted(lst):
    return lst == sorted(lst)

print('Is sorted: ', issorted([5, 4, 1, 2]))
print('Is sorted: ', issorted([1, 2, 3, 4]))
print('Is sorted: ', issorted(['a', 'b', 'd', 'c']))
print('Is sorted: ', issorted(['w', 'x', 'y', 'z']))
哪些产出:

Is sorted:  False
Is sorted:  True
Is sorted:  False
Is sorted:  True

range(0,len(lst)-1)
应该这样做。如果你知道问题是k变得太大,你能想办法避免(或抓住)吗?
Is sorted:  False
Is sorted:  True
Is sorted:  False
Is sorted:  True