6 / 6 / 2
Регистрация: 11.04.2011
Сообщений: 260

Не работает метод удаления в классе

13.01.2016, 11:18. Показов 698. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Подскажите пожалуйста. Не получается удаление из списка в классе
Вот класс с методами :
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Friends:   
   
    def __init__(self, connections):
        self.connections = connections
        self.iconnections = list(self.connections)        
 
    def add(self, connection):
        for a in self.iconnections:
           # if a.intersection(connection) == 0 and a.intersection(connection.reverse()) == 0:
            if a == connection:
                return False
            else:
                self.iconnections.append(connection)
                return True       
    
    def remove(self, connection):
        for a in self.iconnections:
            if a==connection:
                self.iconnections.remove(connection)
                #print(self.iconnections)
                return True
            else:            
                return False
 
    def names(self):
        n = set()
        for a in self.iconnections:
            n.update(a)
        return n
 
    def connected(self, name):
        n = set()
        for a in self.iconnections:
            n.add(a.difference(name))
        return n
Теперь работаем с классом :
Python
1
2
3
f = Friends(({"nikola", "sophia"}, {"stephen", "robot"}, {"sophia", "pilot"}))
f.remove({"stephen", "robot"})
f.names()
По идее f.names() должен возвращать {"nikola", "sophia", "pilot"}
Но возвращает {'nikola', 'robot', 'sophia', 'pilot', 'stephen'}.
Т.е. метод remove не срабатывает. Ошибок при написании кода не даёт.
Питон изучаю недавно. Пока тяжело находить свои ошибки..
Спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.01.2016, 11:18
Ответы с готовыми решениями:

Не работает метод удаления в классе
Помогите пожалуйста. Последний элемент он удаляет, а до него нет, как исправить? void Tabl::Del() { T *m = V.begin(); T *tmp; ...

Двухсвязный список в классе, метод удаления
Все доброго вечера! Очень слезно прошу указать мне на мою ошибку, ибо уже две недели пытаюсь понять эту тему...Исходные данные: класс, в...

Реализовать в производном классе метод нахождения и удаления из вектора всех непростых элементов
Здравствуйте. Помогите пожалуйста переделать задачу. Вот условие задачи которая у меня есть : Создать иерархию классов представляющих...

4
Эксперт Python
 Аватар для dondublon
4651 / 2071 / 366
Регистрация: 17.03.2012
Сообщений: 10,180
Записей в блоге: 6
13.01.2016, 13:22
Ой, как всё сложно. Что сделать-то хотели?
Чего не хватает в простом списке или множестве?

При беглом взгляде - думаю, вместо множеств из двух элементов вам имеет смысл использовать кортежи.

Добавлено через 2 минуты
Как-то так:
Python
1
2
3
f = {("nikola", "sophia"), ("stephen", "robot"), ("sophia", "pilot")}
f.remove(("stephen", "robot"))
f
Вывод:
Code
1
Out[8]: {('nikola', 'sophia'), ('sophia', 'pilot')}
0
6 / 6 / 2
Регистрация: 11.04.2011
Сообщений: 260
14.01.2016, 17:51  [ТС]
dondublon, я читал что кортеж это неизменяемый список. => удалить оттуда ничего нельзя. поэтому я вначале скопировал получаемый кортеж в список, чтобы из него можно было удалять.
Python
1
self.iconnections = list(self.connections)
Добавлено через 3 минуты
dondublon,
Python
1
2
3
4
5
6
7
8
def remove(self, connection):
        for a in self.iconnections:
            if a==connection:
                self.iconnections.remove(connection) #здесь я и пытаюсь удалить из кортежа 
                #print(self.iconnections)
                return True
            else:            
                return False
0
Эксперт Python
 Аватар для dondublon
4651 / 2071 / 366
Регистрация: 17.03.2012
Сообщений: 10,180
Записей в блоге: 6
15.01.2016, 08:41
Цитата Сообщение от romasimeiz Посмотреть сообщение
dondublon, я читал что кортеж это неизменяемый список. => удалить оттуда ничего нельзя. поэтому я вначале скопировал получаемый кортеж в список, чтобы из него можно было удалять.
Верно, изменять нельзя. Но это и не требуется.
Посмотрите на мой вариант внимательнее, где там кортежи. Вовсе не iconnection или его аналог я предлагаю сделать таковым.

Добавлено через 6 минут
Исправление:
Цитата Сообщение от dondublon Посмотреть сообщение
iconnections или его аналог
1
6 / 6 / 2
Регистрация: 11.04.2011
Сообщений: 260
15.01.2016, 12:05  [ТС]
dondublon, понял о чём Вы! Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.01.2016, 12:05
Помогаю со студенческими работами здесь

В классе OnlyData написать метод, который выводит значение переменной i и вызвать этот метод в том же классе
Я конечно понимаю, что задача оч простая, но все же. В классе OnlyData нужно написать метод, который выводит значение переменной i и...

В базовом классе: массив и абстрактный метод суммы его элементов. В производном классе реализовать метод.
Базовым классом является СИ. В базовом классе: причитать защищенный целочнеельный одномерный маст Ат эпи: разработай конструктор с...

В базовом классе: массив и абстрактный метод генерирующий его элементы. В производном классе реализовать метод.
Буду очень благодарен, если кто поможет с выполнением задания. Задание: Базовым класом есть ClassA. В базовом классе: -...

В базовом классе: массив и абстрактный метод произведения его элементов. В производном классе реализовать метод.
Базовым классом является ClassA. В базовом классе: - объявить защищенный целочисленный одномерный массив Masiv - разработать...

Не работает метод Set в классе
Только недавно начал изучать ооп, прога самая глупая, придумал за 5 минут, чтобы просто понять почему они не работают, буду благодарен за...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru