检查列表是否已排序 Python

问题描述 投票:0回答:3

我正在尝试解决家庭作业。这是作业: 编写 in_order() 函数,该函数以整数列表作为参数,如果整数已排序(按从低到高的顺序),则返回 True,否则返回 False。如果列表已排序,则程序输出“In order”,如果列表未排序,则程序输出“Not in order”。

例如:如果传递给 in_order() 函数的列表是 [5, 6, 7, 8, 3],则该函数返回 False,程序输出:

不按顺序 例如:如果传递给 in_order() 函数的列表是 [5, 6, 7, 8, 10],则该函数返回 True 并且程序输出:

按顺序 注意:使用for循环。不要使用排序()或排序()。

这是我到目前为止的代码

def in_order(nums):
in_order = True
previous = check[0]
for item in check[1:]:
    if __name__ == '__main__':
        nums1 = [5, 6, 7, 8, 3]
    if in_order(nums1):
        print('In order')
    else:
        print('Not in order') 
nums2 = [5, 6, 7, 8, 10]
if in_order(nums2):
    print('In order')
else:
    print('Not in order')
python-3.x list
3个回答
0
投票

for
是否需要是一个单独的语句,或者它可以是生成器表达式的一部分吗?

def in_order(nums):
    return all(nums[i-1] < nums[i] for i in range(1, len(nums)))

0
投票

玩了一会后得到了这个。这应该有效。

def in_order(nums): 对于范围内的 i(len(nums)): 如果 nums[i] < nums[i-1]: return False elif nums[i] < nums[i+1]: return False else: return True


-1
投票

我使用马克的代码猜测了解决这个问题的方法。我更改了它,发现下面的代码可以解决问题。我不太清楚为什么。

def in_order(nums):
    for i in range(len(nums)):
        if nums[i-1] < nums[i]:
            return False
        else:
            return True
© www.soinside.com 2019 - 2024. All rights reserved.