2015-04-07 4 views
1

Это, возможно, было задано раньше, но его трудно найти. В основном мне интересно, как сделать копию списка, который не будет обновляться при изменении списка. Я уже давно разбираюсь в Python - удивляюсь, что это первый раз, когда я столкнулся с этим.Стоп-лист стоп-кадра

var = 10 

varcopy = var 

for i in range(0,5): 
    var = var + i 
    print var 
    print varcopy 

10 
10 
11 
10 
13 
10 
16 
10 
20 


list = [] 


listcopy = list 

for i in range(0,5): 
    list.append(i) 
    print list 
    print listcopy 


[0] 
[0] 
[0, 1] 
[0, 1] 
[0, 1, 2] 
[0, 1, 2] 
[0, 1, 2, 3] 
[0, 1, 2, 3] 
[0, 1, 2, 3, 4] 
[0, 1, 2, 3, 4] 

Почему список копий ТАКЖЕ прилагается к ?! Как замораживать его, чтобы получить:

[0] 
[] 
[0, 1] 
[] 
[0, 1, 2] 
[] 
[0, 1, 2, 3] 

и т.д ...

+0

Также вы не должны указывать свой список имен переменных. Список - это встроенный python. – reticentroot

ответ

1

list и listcopy оба относятся к одному объекту. Вот несколько способов сделать копию списка:

listcopy = list[:] 

import copy 
listcopy = copy.copy(list) 

# Also make a copy of the objects in the list 
import copy 
listcopy = copy.deepcopy(list)