以下代碼:Python:列表被覆蓋。但爲什麼?
file_path = 'some_path/data.txt'
exp = loadtxt(file_path)
signal_exp = []
signal_exp.append(exp[1, :])
signal_exp_new = []
signal_exp_new.append(signal_exp[0])
signal_exp_new[0][0:800] = 0.0
將導致signal_exp
在第一元件800覆蓋beeing以及signal_exp_new
。我找到了解決辦法,但我不明白爲什麼下一個(至少我)按預期工作:
file_path = 'some_path/data.txt'
exp = loadtxt(file_path)
signal_exp = []
signal_exp.append(exp[0, :].tolist())
signal_exp_new = []
signal_exp_new.append(signal_exp[0][:])
for l in range(800):
signal_exp_new[0][l] = 0.0
誰能給我一個解釋,爲什麼在後者的情況下,不覆蓋原來的名單,但在第一個案例是?
因爲'[:]'創建一個複製完整列表的分片。 – njzk2