Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 4, 2016 19:21:47

Sprouttie
Зарегистрирован: 2014-10-01
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3. Вопрос по работе интерпретатора.

Моя задача на примитивном примере:
Исходный список: a=[]
Нужно получить:a=[,,,]
т.е. последовательно менять один из элементов исходного списка на ‘X’ и добавлять каждый полученный список в исходный.

# coding: utf-8
a=[['a','b','c','d']]
b=['a','b','c','d']
for i in range(0,len(b)):
    c=b
    c[i]='X'
    a.append(c)
print(a)
print(b)
полученный результат:
[, , , , ]

Он показывает, что интерпретатор даже список b поменял который вне пределов цикла, потому что видимо с=b, и все четыре новых списка он тоже приравнял к последнему с неправильному, т.к. он постепенно менял и b.
На числовых значениях такого не происходит. Т.е. он не меняет значение b, если я к нему приравняю с, а потом с изменю, b не поменяется.
Вопрос: как мне обойти эту особенность интерпретатора, если он меняет даже то, что вроде менять не должен?

Отредактировано Sprouttie (Янв. 4, 2016 19:34:19)

Офлайн

#2 Янв. 4, 2016 19:35:44

Firik
Зарегистрирован: 2015-12-02
Сообщения: 151
Репутация: +  6  -
Профиль   Отправить e-mail  

Python 3. Вопрос по работе интерпретатора.

Попробуйте заменить c=b на

c=b[:]

Отредактировано Firik (Янв. 4, 2016 19:37:59)

Офлайн

#3 Янв. 4, 2016 19:35:52

Sprouttie
Зарегистрирован: 2014-10-01
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3. Вопрос по работе интерпретатора.

Исходный текст моего сообщения

Прикреплённый файлы:
attachment Вот_так.png (37,7 KБ)

Офлайн

#4 Янв. 4, 2016 19:40:23

Sprouttie
Зарегистрирован: 2014-10-01
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 3. Вопрос по работе интерпретатора.

Да! Получилось, спасибо! Была такая идея, но потратив кучу сил на постижение принципа работы интерпретатора, уже отчаялся получить какой-то результат))). Там у меня более сложный цикл был и долго не мог найти ошибку. Огромное спасибо!

Отредактировано Sprouttie (Янв. 4, 2016 19:46:51)

Офлайн

#5 Янв. 4, 2016 19:46:55

Firik
Зарегистрирован: 2015-12-02
Сообщения: 151
Репутация: +  6  -
Профиль   Отправить e-mail  

Python 3. Вопрос по работе интерпретатора.

Вы создавали копию ссылки на список. Мой вариант создает копию значений.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version