alex28746
Март 28, 2015 18:35:45
Добрый день. Помогите пожалуйста с таким заданием:
Написать класс MyList который будут представлен в виде списка элементов типа Int. Класс должен иметь конструктор в котором устанавливаем максимальный размер списка и метод add_element(a) который после проверки, если данный элемент имеет тип INT, будет добавлять его в список. Если список уже имеет максимальное количество элементов, прежде чем добавить новый элемент, должен быть удален первый элемент в списке.
terabayt
Март 28, 2015 19:18:29
не сказано что нужно делать если в класс передать список с количеством элементов больше чем максимальный размер!
я сделал что оно тогда будет обрезать
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)
alex28746
Март 28, 2015 19:56:00
огромное спасибо terabayt ,столько раз уже выручал
alex28746
Март 28, 2015 20:45:31
Не могли бы еще помочь расширить этот класс методами 1) lavg() который возвращает среднее значение элементов в списке 2) lsum() сумму элементов в списке 3) lmax() и lmin() которые возвращают максимальное и минимальное значение в списке и его индекс И если в списке находятся несколько элементов с таким же значением и они максимальные или минимальные, то нужно вывести все из них.
alex28746
Март 28, 2015 20:46:44
должно выгляднть примерно так
Например:
метод lmin должен вернуть
(4, )
terabayt
Март 28, 2015 20:53:49
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)))
alex28746
Март 28, 2015 21:11:22
Из списка
Вот
что должен был вернуть lmin
Должен еще быть возвращен его индекс в списке.
Почему-то в первый раз не удалось скопировать в комментарии целиком.
terabayt
Март 28, 2015 21:30:17
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))
alex28746
Март 28, 2015 21:42:09
странно что на форуме только с помощью пайтон кода удалось ввести список, без этого он почему-то удалял просто из сообщения этот список