【发布时间】:2014-03-02 21:29:06
【问题描述】:
names = ['James','Adam','Ross','Bryce','Sue','Matt','Chris','Sarah','Rachel','Aron']
def sort(names):
less = []
equal = []
greater = []
if len(names) > 1:
pivot = names[0]
for x in names:
if x < pivot:
str(less.append(x))
elif x == pivot:
str(equal.append(x))
elif x > pivot:
str(greater.append(x))
return sort(less) + sort(equal) + sort(greater)
else:
if len(names) == 1:
return names
print sort(names)
每当我运行它时,它都会返回此错误:
TypeError: unsupported operand type(s) for +: 'NoneType' and 'list'.
谁能告诉我这是怎么回事?我对 Python 很陌生
【问题讨论】:
-
只是一个提示,因为您的
equal列表中的所有内容都等于枢轴,它不需要排序,并且可以简单地添加到中心,这样您就有return sort(less) + equal + sort(greater) -
另一个提示,快速排序具有“就地”排序的优势。因此可以通过交换值在单个列表中完成。相比之下,这段代码在递归发生时会创建大量新列表。
标签: python list sorting nonetype