看板 Python 關於我們 聯絡資訊
這一題給定nums1, nums2兩個list,以及m,n代表這兩個list的長度, 然後題目規定要把兩個用merge的方式存到nums1。 想說先直接sort測試看看,以下是我的程式碼: class Solution(object): def merge(self, nums1, m, nums2, n): """ :type nums1: List[int] :type m: int :type nums2: List[int] :type n: int :rtype: void Do not return anything, modify nums1 in-place instead. """ nums = nums1 + nums2 nums.sort() nums1 = nums 但這個程式碼在下面的測資出現問題: Input: [0], 0, [1], 1 Output: [0] Expected: [1] 感覺,我的output應該是[0,1]才對, 但我不懂的是為什麼明明nums1有一個[0]的元素,長度卻是0? 後來又在跑自定的測資 Input: [0],1,[1],1 Your Answer: [0] Expected answer: Line 16: IndexError: list assignement index out of range 我的程式只有寫到13行,是不是他題目有點奇怪啊? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.214.132 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1468548902.A.FB0.html
uranusjr: nums1 = nums 並不會 modify nums1 in-place 07/15 10:26
xxx30165: 那請問為什麼不是in-place會造成結果錯誤呢? 07/17 09:23
s860134: list 物件提供幾個 in-place 方法 append,extend,sort 07/17 16:19
xxx30165: 嗯嗯,但是我還是不太懂不用in-place出錯的原因是什麼? 07/17 21:20
uranusjr: Reassign local scope 裡的變數不會影響 scope 外的值 07/17 21:26
uranusjr: 你自己執行一次, 在 merge 執行前、中、後把 nums1 和 07/17 21:27
uranusjr: id(nums1) 印出來 (後者會印出 nums1 是「哪一個」物件) 07/17 21:28
uranusjr: 看看就知道了 07/17 21:28
xxx30165: 終於懂了,感謝您! 07/17 21:41