Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么列表==';已排序';关键字为false_Python_List_Sorting - Fatal编程技术网

Python 为什么列表==';已排序';关键字为false

Python 为什么列表==';已排序';关键字为false,python,list,sorting,Python,List,Sorting,当我检查该列表a=[1,2,3,4,5]的条件时,该列表[1,2,3,2,1,5,4]为“排序”关键字的意思 >> a == sorted >> False 为什么这给了我错误和错误的答案 >>a != sorted >> True 为什么这让我觉得是真的? 在“==”中为假,在“!=”中为真无论列表是否排序您误解了的含义。它是一个返回已排序列表的函数,而不是测试给定列表是否已排序。为了实现这一点,您可以使用类似于a==sorted(a)的方法

当我检查该列表
a=[1,2,3,4,5]
的条件时,该列表
[1,2,3,2,1,5,4]
为“排序”关键字的意思

>> a == sorted
>> False
为什么这给了我错误和错误的答案

>>a != sorted
>> True
为什么这让我觉得是真的?
在“==”中为假,在“!=”中为真无论列表是否排序

您误解了的含义。它是一个返回已排序列表的函数,而不是测试给定列表是否已排序。为了实现这一点,您可以使用类似于
a==sorted(a)

的方法,
sorted()
函数获取一个列表并将其排序后返回

因此,您应该将您的列表与该列表的“排序版本”进行比较,以查看它是否最初已排序

例如



请注意,当您在内存中生成一个新的排序版本时,这对于长列表来说是缓慢的。相反,您可以编写一个过程来检查每个元素是否大于上一个元素。这将更有效率。

排序
是Python中的内置函数。列表和函数本质上是不可比较的,因此无论
a
中有什么内容,
a==sorted
都会返回false,这是很自然的。您可以使用
类型
功能进行检查:

>>> print(type([1, 2, 3]))
<class 'list'>
>>> print(type(sorted))
<class 'builtin_function_or_method'>
或者,如果您喜欢不在O(n log n)时间内运行的内容:


all(首先让我们深入了解一下:

sorted
确实是一个关键词,但它不是你想象的那样:

>>> type(sorted)
<class 'builtin_function_or_method'>
然后使用该函数使您的支票如下所示:

>>> is_sorted(a)
>>> True
或将排序后的
用于预期用途:

a==sorted(a)

sorted
是一个内置函数,由于列表永远不能等于函数,
a==sorted
将始终返回
False
。因此,相反的,
a!=sorted
将始终返回
True
==sorted
与确定列表是否已排序不同;您需要创建您自己的函数。因为
some\u list==sorted
,将您的列表与
sorted
函数进行比较,并且由于列表与
sorted
不同,它返回
False
。请注意
sorted
不是关键字,而是一个内置函数,这是不同的。现在很清楚了。。谢谢全部的
>>> type(sorted)
<class 'builtin_function_or_method'>
def is_sorted(a=[]):
    prev = a[0]
    if len(a)>1:
        for item in a[1:]:
            if item < prev:
                return False
            else:
                prev=item
    return True
>>> is_sorted(a)
>>> True
a==sorted(a)