2017-02-18 10 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 и как его предотвратить?Как ограничить сортировку() одним списком?

+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 

Теперь, когда вы изменяете до н.э., он не изменит AB. Таким образом, сортировка не повлияет на AB. Теперь они указывают на разные места в памяти.

0

Вполне возможно, что BC и AB являются указывая к же объекта в памяти и переменный держатель AB и BC действуют как указателя. Они оба равны , указывая на то же самое, и поэтому, если вы сортируете BC, список BC равен , указывая, чтобы сортироваться, и AB также указывает на сейчас отсортировано list BC.

Чтобы исправить это, вместо того чтобы сказать BC = AB вы можете сказать BC = AB[:], который будет хранить копию АВ в БЛ вместо самой AB. Это приведет к: изменениям, внесенным в один , а не, отраженный в другом.

Смежные вопросы