переназначение переменной python

Я новичок в python (использую 2.7.6), и я уверен, что об этом уже спрашивали, но я нигде не могу найти ответ. Я просмотрел правила области видимости python и не понимаю, что происходит в следующем коде (который преобразует три строки шестнадцатеричных чисел в целые числа)

ls=['a','b','c']
d=ls
for i in range(0,len(d)):
    d[i]=int(d[i],64)

print str(ls)

Почему значение ls меняется вместе со значением d?

Я не мог повторить это поведение с простыми заданиями. Спасибо!


person Iodizer    schedule 17.12.2014    source источник


Ответы (1)


d является ls.

Не значение, присвоенное d, равно значению, присвоенному ls. Это одно и то же. Это типичное поведение Python, а не только для списков.

Простой способ сделать то, что вы хотите, это

d = ls[:]
person Joel    schedule 17.12.2014
comment
эта ссылка, которая была указана в дублирующем вопросе, была тем, что я искал: python.net/~goodger/projects/pycon/2007/idiomatic/ - person Iodizer; 17.12.2014
comment
Всем, кого это смущает, я предлагаю прочитать все комментарии в дублирующем вопросе. Очень полезно... - person Iodizer; 17.12.2014