2016-09-20 56 views
0

當我想複製我的列表並嘗試從一個列表中刪除項目時,它也會消失在另一個列表中。你能給我一個理由嗎?我如何從一個列表中刪除?list.remove(x)刪除多於此列表的對象

letter_list = ["A","B","C"] 
same_letter_list = letter_list 

print same_letter_list 
print letter_list 

same_letter_list.remove("B") 

print same_letter_list 
print letter_list 

我的輸出是:

['A', 'B', 'C'] 
['A', 'B', 'C'] 
['A', 'C'] 
['A', 'C'] 

我在編程新。 感謝您的幫助!

+0

'same_letter_list = letter_list'使得'same_letter_list'引用*同清單*。這裏只有一個名單,有兩個名字。 –

+1

這看起來與這個其他問題非常相似:http://stackoverflow.com/questions/8744113/python-list-by-value-not-by-reference –

+1

如果你是Python的新手,你爲什麼從Python 2開始? [Python堆棧溢出社區](http://sopython.com)絕大多數[推薦](http://sopython.com/wiki/What_tutorial_should_I_read%3F)以Python 3開頭,[python.org本身](https ://wiki.python.org/moin/Python2orPython3)。版本3是語言的現在和未來,而2是過去。首先學習2,你會學到很多不好的習慣,當你學習3(你最終需要做的)時需要糾正,所以最好從3開始,然後學習2的差異後來。 – MattDMo

回答

0

名單是相同的。您可以將它切片到另一個變量,以便它們不同。就像這樣:

letter_list = ["A","B","C"] 
same_letter_list = letter_list[:] 

print same_letter_list 
print letter_list 

same_letter_list.remove("B") 

print same_letter_list 
print letter_list 
0

因爲same_letter_listletter_list是相同的列表。它參考相同的記憶。

如果你想讓他們分開,使複印件

same_letter_list = letter_list.copy() 
0

基本上letter_list和same_letter_list是相同的地址

>>> letter_list = ["A","B","C"] 
... same_letter_list = letter_list 
... 
>>> id(same_letter_list) 
1316298424 
>>> id(letter_list) 
1316298424 

它會給一個新的地址

diff_letter_list = letter_list[:] 
id(diff_letter_list) 
1307621296