>>> 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()到一個列表?
>>> 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()到一個列表?
你基本上指向程序存儲器中與AB和BC相同的區域。所以,要創建BC作爲一個新的列表,並將其保存在不同的地方在記憶中,你可以這樣做:
假設這是蟒蛇:
BC = AB[:] # creates a copy of AB
現在,當你修改BC,它不會改變AB。這樣排序就不會對AB產生任何影響。現在他們指向記憶中的不同位置。
這可能是可能的,BC和AB被指向在存儲器和可變支架AB和BC的行爲像指針的同一對象。他們都是指向到同樣的事情,所以如果你排序BC,列表BC是指向得到排序和AB也指向現在排序列表BC。
爲了解決這個問題,而不是說BC = AB
你可以說BC = AB[:]
將存儲AB的副本在公元前而不是AB本身。這將導致:對其中一個而不是的更改反映在另一箇中。
重複...很多事情可能。這應該有所幫助:http://stackoverflow.com/questions/8744113/python-list-by-value-not-by-reference – synchronizer