Форум сайта python.su
Добрый день. Помогите пожалуйста с таким заданием:
Написать класс MyList который будут представлен в виде списка элементов типа Int. Класс должен иметь конструктор в котором устанавливаем максимальный размер списка и метод add_element(a) который после проверки, если данный элемент имеет тип INT, будет добавлять его в список. Если список уже имеет максимальное количество элементов, прежде чем добавить новый элемент, должен быть удален первый элемент в списке.
Отредактировано alex28746 (Март 28, 2015 18:58:17)
Офлайн
не сказано что нужно делать если в класс передать список с количеством элементов больше чем максимальный размер!
я сделал что оно тогда будет обрезать
class MyList(list): def __init__(self, l): self.max = 10 self.extend(l[:self.max]) def add_element(self, element): if not isinstance(element, int): raise TypeError("add_element() argument must be a int") self.append(element) if len(self) > self.max: self.pop(0)
Офлайн
огромное спасибо terabayt ,столько раз уже выручал
Офлайн
Не могли бы еще помочь расширить этот класс методами 1) lavg() который возвращает среднее значение элементов в списке 2) lsum() сумму элементов в списке 3) lmax() и lmin() которые возвращают максимальное и минимальное значение в списке и его индекс И если в списке находятся несколько элементов с таким же значением и они максимальные или минимальные, то нужно вывести все из них.
Отредактировано alex28746 (Март 28, 2015 20:46:12)
Офлайн
должно выгляднть примерно так
Например:
метод lmin должен вернуть
(4, )
Офлайн
class MyList(list): def __init__(self, l): self.max = 10 self.extend(l[:self.max]) def add_element(self, element): if not isinstance(element, int): raise TypeError("add_element() argument must be a int") self.append(element) if len(self) > self.max: self.pop(0) def lavg(self): return sum(self)*1.0/len(self) def lsum(self): return sum(self) def lmax(self): return tuple([max(self)] * self.count(max(self))) def lmin(self): return tuple([min(self)] * self.count(min(self)))
Офлайн
Из списка
[4, 6, 7 ,4, 12]
(4, [0, 3] )
Отредактировано alex28746 (Март 28, 2015 21:30:12)
Офлайн
alex28746ой ) и читал же о этом, но когда писал код забыл))
Должен еще быть возвращен его индекс в списке.
class MyList(list): def __init__(self, l): self.max = 10 self.extend(l[:self.max]) def add_element(self, element): if not isinstance(element, int): raise TypeError("add_element() argument must be a int") self.append(element) if len(self) > self.max: self.pop(0) def lavg(self): return sum(self)*1.0/len(self) def lsum(self): return sum(self) def func(self, n): return (n, [i for i, j in enumerate(self) if j == n]) def lmax(self): return self.func(max(self)) def lmin(self): return self.func(min(self))
Офлайн
странно что на форуме только с помощью пайтон кода удалось ввести список, без этого он почему-то удалял просто из сообщения этот список
Офлайн