作者wheado (principal component QQ)
看板Python
标题[问题] 新手return范例问题
时间Tue Sep 12 19:08:54 2017
教学范例:
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quicksort(left) + middle + quicksort(right)
print(quicksort([3,6,8,10,1,2,1]))
# Prints "[1, 1, 2, 3, 6, 8, 10]"
以例子来看,里面变数应该是如下:
pivot = 3
left = [1,1,2]
middle = [3]
right = [6,8,10]
但是
想请教为何单纯 return quicksort(left)
出来的结果是 []
为何 return quicksort(left) + quicksort(middle) + quicksort(right)
结果会是 Error
不了解最後 return 里面到底是发生甚麽事情。
新手发问,谢谢大家。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.217.137.99
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1505214536.A.43D.html
1F:→ stucode: 拿起笔在纸上模拟一下就知道发生什麽事了 09/12 19:20
2F:→ stucode: 还是不懂再问你不懂的地方吧 09/12 19:21
※ 编辑: wheado (180.217.137.99), 09/12/2017 19:39:52
3F:→ HenryLiKing: 应该是你设计错误ㄅ 人在车上有空在看内容 09/12 19:49
4F:推 stucode: return quicksort(left) + middle + quicksort(right) 09/12 19:52
5F:→ stucode: 不等於return left + middle + right 09/12 19:53
6F:→ zerof: www.pythontutor.com/live.html ? 09/12 19:53
7F:→ stucode: 会持续递回呼叫 把呼叫的地方再继续跑下去 09/12 19:54
8F:→ stucode: z大那个网站不错 可以把code丢进去玩玩看 09/12 20:01