Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Sorting ';非类型';对象在python中不可下标_Sorting_Python 3.7_Nonetype - Fatal编程技术网

Sorting ';非类型';对象在python中不可下标

Sorting ';非类型';对象在python中不可下标,sorting,python-3.7,nonetype,Sorting,Python 3.7,Nonetype,sort()对列表进行适当排序并返回None。看起来您打算改为使用排序的: #i'm just testing it lst=[3, 2, 4, 5,1] print([i for i in lst if i % 2 != 0].sort()[0]) #i haven't tried any thing #I expect the output 1 但是请注意,如果只获取列表的第一个元素,则无需对列表进行排序。您可以使用min来获得性能更好的相同结果(O(n)而不是O

sort()
对列表进行适当排序并返回
None
。看起来您打算改为使用
排序的

#i'm just testing it 

lst=[3, 2, 4, 5,1]

print([i for i in lst if i % 2 != 0].sort()[0])

#i haven't tried any thing        

#I expect the output 1
但是请注意,如果只获取列表的第一个元素,则无需对列表进行排序。您可以使用
min
来获得性能更好的相同结果(O(n)而不是O(nlog(n)):


这里的问题是,当您在列表上运行“sort”函数时,该函数会更新列表并返回void。因此,您实际上是在尝试调用非类型对象的索引

解决此问题的最佳方法是将筛选器设置为变量,在此变量上运行排序,然后打印想要的值

例:

l=[i为lst中的i,如果i%2!=0]
l、 排序()
打印(l[0])
sort()正在修改方法并返回None

这一个有效:

print(min([i for i in lst if i % 2 != 0]))

或者使用像这样的排序方式嘿嘿
#我没有尝试过任何东西
——我建议您这样做:删除
[0]
,然后查看表达式的类型(您可以使用
类型
,或者只打印
即可)。
print(min([i for i in lst if i % 2 != 0]))
lst=[3, 2, 4, 5,1]
odds = [i for i in lst if i % 2 != 0]
ods.sort()
print(ods[0])