[問題] 新手return範例問題

看板Python作者 (principal component QQ)時間6年前 (2017/09/12 19:08), 6年前編輯推噓1(107)
留言8則, 3人參與, 最新討論串1/2 (看更多)
教學範例: 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://www.ptt.cc/bbs/Python/M.1505214536.A.43D.html

09/12 19:20, , 1F
拿起筆在紙上模擬一下就知道發生什麼事了
09/12 19:20, 1F

09/12 19:21, , 2F
還是不懂再問你不懂的地方吧
09/12 19:21, 2F
※ 編輯: wheado (180.217.137.99), 09/12/2017 19:39:52

09/12 19:49, , 3F
應該是你設計錯誤ㄅ 人在車上有空在看內容
09/12 19:49, 3F

09/12 19:52, , 4F
return quicksort(left) + middle + quicksort(right)
09/12 19:52, 4F

09/12 19:53, , 5F
不等於return left + middle + right
09/12 19:53, 5F

09/12 19:53, , 6F
www.pythontutor.com/live.html ?
09/12 19:53, 6F

09/12 19:54, , 7F
會持續遞迴呼叫 把呼叫的地方再繼續跑下去
09/12 19:54, 7F

09/12 20:01, , 8F
z大那個網站不錯 可以把code丟進去玩玩看
09/12 20:01, 8F
文章代碼(AID): #1Pjy18Gz (Python)
文章代碼(AID): #1Pjy18Gz (Python)