這是我的清單,a = [['a','b','c','d'],['e','f','g','h'],['i','j','k','l'],['m','n','o','p']]這是我的功能,def add(change,unchange): a = change b = unchange a[0].insert(a[0].index(a[0][2]),"high_range") a[0].insert(a[0].index(a[0][3]),"low_range") print(a) print(b)當我嘗試執行此函數時,add(a,a[0])我得到這個輸出,[['a', 'b', 'high_range', 'low_range', 'c', 'd'], ['e', 'f', 'g', 'h'], ['i', 'j', 'k', 'l'], ['m', 'n', 'o', 'p']]['a', 'b', 'high_range', 'low_range', 'c', 'd']但我的預期輸出如下,[['a', 'b', 'high_range', 'low_range', 'c', 'd'], ['e', 'f', 'g', 'h'], ['i', 'j', 'k', 'l'], ['m', 'n', 'o', 'p']]['a', 'b', 'c', 'd']如何使列表的第一個元素在第二個變量中保持不變?對不起,我是新手。
3 回答

POPMUISE
TA貢獻1765條經驗 獲得超5個贊
由于列表是可變類型,因此當您將值插入其中時,也會反映在 中,因為它們是指向同一列表的指針。您可以在將值插入列表之前進行打印,也可以復制如下內容:abbbunchange
def add(change,unchange):
a = change
b = unchange[:]
a[0].insert(2, "high_range")
a[0].insert(3, "low_range")
print(a)
print(b)
此外,是多余的,您已經知道索引是2。a[0].index(a[0][2])

12345678_0001
TA貢獻1802條經驗 獲得超5個贊
主要問題是排隊:
add(a, a[0])
當你在函數內部變異時,函數會發生變化,因為它們指向同一件事。您需要相應地設計程序。您可以參考這個答案。如何克隆或復制列表?a
a[0]
根據您的要求,您可以執行此操作。
在調用函數時,要么提供副本。
add(a, a[0][:])
# 或
閱讀@alec的答案。
添加回答
舉報
0/150
提交
取消