Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 12, 2011 04:56:35

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

почему не изменяется значения в исходном списке?

всем привет.
такой код:

l = ["A = {A}", "B = {B}"]
for it in l:
it = it.format(A="a", B="b")

print l
http://liveworkspace.org/code/ac0b2b421aaf693e65256906974cd2be

выводит это:
почему?

спасибо.



Офлайн

#2 Ноя. 12, 2011 06:15:19

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

почему не изменяется значения в исходном списке?

http://liveworkspace.org/code/f221c425b40ab3096418fad7086aa38e

т.к. изменения записываются в локальную переменную it, а не в массив l

Офлайн

#3 Ноя. 12, 2011 06:23:55

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

почему не изменяется значения в исходном списке?

o7412369815963
изменения записываются в локальную переменную it, а не в массив l
хм.. а я думал, что it в моем примере это ссылка на элементы списка.

а для пайтон 3.2 это так же записывается? может быть есть более естественный способ?



Офлайн

#4 Ноя. 12, 2011 08:22:43

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

почему не изменяется значения в исходном списке?

pupkin2
o7412369815963
изменения записываются в локальную переменную it, а не в массив l
хм.. а я думал, что it в моем примере это ссылка на элементы списка.

а для пайтон 3.2 это так же записывается? может быть есть более естественный способ?
Да ссылка. Когда вы присваиваете it новое значение, вы переписываете ссылку.



Офлайн

#5 Ноя. 12, 2011 08:29:08

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

почему не изменяется значения в исходном списке?

cutwater
Когда вы присваиваете it новое значение, вы переписываете ссылку.
в смысле “переписываем”?
в смысле что переписываем значение на которое указывает ссылка, или в смысле что переписываем саму ссылку в результате чего создается новый объект?



Офлайн

#6 Ноя. 12, 2011 09:16:26

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

почему не изменяется значения в исходном списке?

pupkin2
o7412369815963
изменения записываются в локальную переменную it, а не в массив l
хм.. а я думал, что it в моем примере это ссылка на элементы списка.

а для пайтон 3.2 это так же записывается? может быть есть более естественный способ?
l = ["A = {A}", "B = {B}"]

print map(lambda it:it.format(A="a", B="b"), l)

Офлайн

#7 Ноя. 12, 2011 09:20:15

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

почему не изменяется значения в исходном списке?

o7412369815963, спасибо. это и вправду естественней выглядит.



Офлайн

#8 Ноя. 12, 2011 16:27:25

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

почему не изменяется значения в исходном списке?

pupkin2
в смысле “переписываем”?
в смысле что переписываем значение на которое указывает ссылка, или в смысле что переписываем саму ссылку в результате чего создается новый объект?
it = it.format(A=“a”, B=“b”)

В смысле после этой строки ссылка it указывает уже не на элемент списка, а на новый объект, который вернул метод format.



Офлайн

#9 Ноя. 12, 2011 17:38:40

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

почему не изменяется значения в исходном списке?

cutwater, так это второе.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version