2017-02-18 27 views
1
>>> AB 
['1', '3', '1', '3'] 
>>> BC = AB 
>>> BC 
['1', '3', '1', '3'] 
>>> BC.sort() 
>>> BC 
['1', '1', '3', '3'] 
>>> AB 
['1', '1', '3', '3'] 

我想排序只有列表BC。爲什麼它排序列表AB以及如何防止它?如何限制sort()到一個列表?

+0

重複...很多事情可能。這應該有所幫助:http://stackoverflow.com/questions/8744113/python-list-by-value-not-by-reference – synchronizer

回答

0

你基本上指向程序存儲器中與AB和BC相同的區域。所以,要創建BC作爲一個新的列表,並將其保存在不同的地方在記憶中,你可以這樣做:

假設這是蟒蛇:

BC = AB[:] # creates a copy of AB 

現在,當你修改BC,它不會改變AB。這樣排序就不會對AB產生任何影響。現在他們指向記憶中的不同位置。

0

這可能是可能的,BC和AB被指向在存儲器和可變支架AB和BC的行爲像指針同一對象。他們都是指向到同樣的事情,所以如果你排序BC,列表BC是指向得到排序和AB也指向現在排序列表BC。

爲了解決這個問題,而不是說BC = AB你可以說BC = AB[:]將存儲AB的副本在公元前而不是AB本身。這將導致:對其中一個而不是的更改反映在另一箇中。

相關問題