Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
1 / 8 / 0
Регистрация: 31.07.2016
Сообщений: 73

Namedtuple._replace() не работает

16.09.2016, 12:39. Показов 1496. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

У именованного кортежа есть метод _replace(), который должен менять значение элемента. То есть, теоретически, в результате нижеприведенного кода p.x должен быть равен 33. Однако print(p) в седьмой строке выводит следующее:
Point(x=11, y=22)
Почему это происходит, и как все-таки можно изменить значение элемента?

Python
1
2
3
4
5
6
7
8
9
10
import collections
 
def main():
    Point = collections.namedtuple('Point', ['x', 'y'])
    p = Point(x=11, y=22)
    p._replace(x=33)
    print(p)
 
if __name__ == '__main__':
    main()
P.S. Версия Python - 3.4.4
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.09.2016, 12:39
Ответы с готовыми решениями:

Не получается инициализировать namedtuple с файлом
Здравствуйте! Изучаю этот язык недавно и столкнулась с тем, что у меня не получается создать метод для считывания CSV файла с помощью...

Приложение работает в Debug, странно работает в Release и не работает при билде
Действия выполняются на эмуляторе Pixel 2. Android 9.0. Если я запускаю приложение с конфигурацией Debug, то всё в порядке. При запуске же...

Не работает SATA винт при загрузке ПК, а DVD без винта работает. На другом компе этот же винт работает
Здравствуйте. В системный блоке нем при загрузки Биос пишет: Advanced primary master HDD марка жесткого диска has been detected ...

5
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
16.09.2016, 12:51
Доку внимательней читать надо
somenamedtuple._replace(kwargs)
Return a new instance of the named tuple replacing specified fields with new values:
Python
1
2
3
4
5
6
import collections
 
Point = collections.namedtuple('Point', ['x', 'y'])
p = Point(x=11, y=22)
p = p._replace(x=33)
print(p)
2
1 / 8 / 0
Регистрация: 31.07.2016
Сообщений: 73
16.09.2016, 13:08  [ТС]
Цитата Сообщение от alex925 Посмотреть сообщение
Доку внимательней читать надо
Ну, не все так хорошо владеют бусурманским языком. Бывает, не сразу понимаешь, чего они там накалякали.
Цитата Сообщение от alex925 Посмотреть сообщение
Return a new instance
Да, действительно, так работает.
Python
1
2
3
4
5
6
import collections
 
Point = collections.namedtuple('Point', ['x', 'y'])
p = Point(x=11, y=22)
m = p._replace(x=33)
print(m)
Point(x=33, y=22)
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
16.09.2016, 13:16
Цитата Сообщение от somnium Посмотреть сообщение
Ну, не все так хорошо владеют бусурманским языком. Бывает, не сразу понимаешь, чего они там накалякали.
Этот твой "басурманский язык", язык международного общения всех программистов, так что привыкай, тут без этого никуда.
Цитата Сообщение от somnium Посмотреть сообщение
Return a new instance
Возвращает новый инстанс (экземпляр класса).
0
1 / 8 / 0
Регистрация: 31.07.2016
Сообщений: 73
16.09.2016, 13:24  [ТС]
Цитата Сообщение от alex925 Посмотреть сообщение
Возвращает новый инстанс
То есть, если есть кортеж с миллионом элементов, и захочется заменить значение одного из них - в результате _replace появится новый такой кортеж? Не слишком ли затратная операция - копировать 999999 элементов ради замены одного?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
16.09.2016, 14:06
Лучший ответ Сообщение было отмечено dondublon как решение

Решение

somnium, да именно так. А кортежи не используют в случаях, когда надо, будет, что-то менять. Кортеж да будет тебе известно это не изменяемый тип данных! Хочешь изменять значения в коллекции, так бери списки, словари и т д
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.09.2016, 14:06
Помогаю со студенческими работами здесь

Не работает клавиатура на ноутбуке, внешняя клавиатура частично не работает, экранная не работает
Добрый день! Не работает клавиатура на ноутбуке, внешняя клавиатура частично не работает, экранная не работает. Результат не могу ввести...

Мышь работает через раз, то есть запустил ОС - мышь не работает, перезагрузил - мышь работает
Установлена Windows 7 со всеми последними обновлениями. Все всегда замечательно работало. Но с недавних пор мышь стала работать через раз....

Почему не работает эхо клиент-сервер ? (на windows работает на linux нет :( )
Есть клиент сервер хотел написать такой клиент сервер чтоб он запускался и на windows и на linux На windows когда я запускаю...

SelText в textBox'e отчёта не работает или работает не так как в форме?
Пробовал всяко-разно выудить выделенный текст - не выходит. Пишет: "Введенное выражение содержит недопустимую ссылку на свойство...

Swf не работает, а в тестовом режиме в самом flash и формате exe работает
Доброго времени суток. Такая проблема: есть рабочий код обмена данными с php скриптам. В тестовом режиме(ctrl+Enter) все работает, при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных выбран регистр накопления, в. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru