我正在使用名为SingPath的网站学习Python。我需要写quicksort,但我收到错误:
"私人测试结果:所有公开测试都通过了,但是一些私有测试失败了。您需要概括解决方案。"
import random
def qsort(l):
if len(l) <= 1:
return l
partition = l[random.randint(0,len(l)-1)]
xx = [x for x in l if x < partition]
yy = [x for x in l if x > partition]
p = [x for x in l if x == partition]
if type(l) != str:
return qsort(xx) + p + qsort(yy)
return ''.join(qsort(xx)+p+qsort(yy))
任何有关如何弄清楚这些代码不够通用的帮助都会非常感激。
我一直在考虑的两条线索是:
qsort()
给出一个字符串而不是一个列表时,它应该能够以列表或字符串的形式返回答案 0 :(得分:0)
可能join
期望连接字符串列表,并且你已经为它连接了一个字符串。所以你做了“添加”字符串,你试图避免使用单独的if
。尝试
''.join([qsort(xx), p, qsort(yy)])