如何判断列表是否按升序排列?(How do I tell if a list is in ascending order? Just needs to return True or False)

编程入门 行业动态 更新时间:2024-10-19 00:20:43
如何判断列表是否按升序排列?(How do I tell if a list is in ascending order? Just needs to return True or False)

我有它的方式它检查前两个数字是否上升后停止。

在检查完整个列表之前,如何让它继续运行?

def isAscending(xs): for n in range(len(xs) + 1): if xs[n] > xs[n+1]: return False else: if xs[n] < xs[n+1]: return True

The way I have it it stops after checking if the first two digits are ascending.

How do I make it keep running until it has checked the whole list?

def isAscending(xs): for n in range(len(xs) + 1): if xs[n] > xs[n+1]: return False else: if xs[n] < xs[n+1]: return True

最满意答案

仅在结尾处返回True ,即在检查每个元素之后。 使用最少的更改修复代码:

def isAscending(xs): for n in range(len(xs) - 1): if xs[n] > xs[n+1]: return False return True print isAscending([1,2,3,4]) # True print isAscending([1,2,4,3]) # False

简短解决方案

>>> lst = [1,2,3,4] >>> sorted(lst) == lst True >>> lst = [1,2,4,3] >>> sorted(lst) == lst False

在O(n)中运行的更好的简短解决方案(排序为O(n log n)):

>>> lst = [1,2,3,4] >>> all(x <= y for x,y in zip(lst, lst[1:])) True >>> lst = [1,2,4,3] >>> all(x <= y for x,y in zip(lst, lst[1:])) False

为了使最后一个内存更有效,如果您使用的是Python 2,请使用itertools.izip代替zip 。

Only return True at the end, that is after every element has been checked. Fixing your code with minimal changes:

def isAscending(xs): for n in range(len(xs) - 1): if xs[n] > xs[n+1]: return False return True print isAscending([1,2,3,4]) # True print isAscending([1,2,4,3]) # False

Short solution:

>>> lst = [1,2,3,4] >>> sorted(lst) == lst True >>> lst = [1,2,4,3] >>> sorted(lst) == lst False

Better short solution that runs in O(n) (sorting is O(n log n)):

>>> lst = [1,2,3,4] >>> all(x <= y for x,y in zip(lst, lst[1:])) True >>> lst = [1,2,4,3] >>> all(x <= y for x,y in zip(lst, lst[1:])) False

To make the last one more memory efficient, use itertools.izip in place of zip if you are using Python 2.

更多推荐

本文发布于:2023-04-28 02:03:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1329713.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:升序   排列   如何判断   列表   list

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!