当我检查此列表a = [1,2,3,4,5]
和此列表[1,2,3,2,1,5,4]
到'sorted'关键字的条件时,表示
>> a == sorted
>> False
为什么这会给我False和
>>a != sorted
>> True
这为何使我成真? 不管列表是否排序,在'=='中给出false,在'!='中给出true
答案 0 :(得分:3)
a == sorted(a)
函数获取列表并返回排序后的列表。
因此,您应该将列表与该列表的“排序版本”进行比较,以查看其最初是否已排序。
例如
sorted()
请注意,对于长列表而言,这很慢,因为您正在内存中生成新的排序版本。相反,您可以编写一个过程来检查每个元素是否大于前一个元素。这样会更有效率。
答案 1 :(得分:3)
tensorflow gpu
是Python中的内置函数。列表和函数本质上是无法比拟的,因此无论sorted
中的内容如何,a == sorted
都会返回false。您可以使用a
函数进行检查:
type
如果您要检查>>> print(type([1, 2, 3]))
<class 'list'>
>>> print(type(sorted))
<class 'builtin_function_or_method'>
的“排序”,则可以执行以下操作:
a
或者,如果您希望某些不在O(n log n)时间内运行的东西:
a == sorted(a)
答案 2 :(得分:1)
您误解了sorted
的含义。它是一个返回排序列表的函数,而不是对给定列表是否排序的测试。为此,您可以使用<div class=container>
<div class="row">
<div class="column one-half">1/2</div>
<div class="column one-fourth">1/4</div>
<div class="column one-eighth">1/8</div>
<div class="column one-eighth">1/8</div>
</div>
<div class="row">
<div class="column one-half offset-half"></div>
<div class="column one-half">1/2</div>
</div>
<div class="row">
<div class="column one-half offset-one-fourth"></div>
<div class="column one-fourth">1/4</div>
<div class="column one-fourth">1/4</div>
<div class="column one-fourth">1/4</div>
</div>
</div>
答案 3 :(得分:1)
让我们深入了解一下:
sorted
的确是一个关键字,但它不是您想的那样:
>>> type(sorted)
<class 'builtin_function_or_method'>
因此此表达式>>> a == sorted
会检查您的列表a
是否与此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
或将sorted
用于预期目的:
a==sorted(a)