我在方法中向陣列參考添加和洗掉元素,我發現雖然元素被添加到參考陣列中,但它沒有被洗掉。
def check(arr):
arr.append(1)
arr = arr[:-1]
arr = [1]
check(arr)
print(arr)
給出[1, 1]我想知道為什么arr = arr[:-1]不從參考陣列中洗掉的輸出
編輯:很多人都在發布正確的解決方案,我不是在尋找解決方案,而是解釋 python 為什么以及如何創建區域變數而不是覆寫全域范圍以及它如何以相同的名稱維護兩者!
uj5u.com熱心網友回復:
正如我已經在此評論中指出的那樣,如果您需要就地修改串列,您可以應用切片表示法:
def check(arr):
arr.append(1)
arr[:] = arr[:-1]
但實際上這段代碼只會洗掉最后一項(您在上面添加了一行),所以您可以使用del:
def check(arr):
arr.append(1)
del arr[-1]
uj5u.com熱心網友回復:
或者,它可以使用全域變數來完成:
def check_arr():
global arr
arr.append(1)
arr = arr[:-1]
arr = [1]
check_arr()
print(arr)
uj5u.com熱心網友回復:
你不回傳任何東西。函式中的 arr 在本地范圍內,所以全域范圍 arr 不會更新
def check(arr):
arr.append(1)
return arr[:-1]
arr = [1]
arr = check(arr)
print(arr)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/413379.html
標籤:
