Уведомления

Группа в Telegram: @pythonsu

#1 Июль 24, 2011 03:24:41

Kein
От:
Зарегистрирован: 2011-07-24
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Object type 'map' has no len()

Вот только изучаю питон(3ий), и не могу разобраться, как мне высчитать Среднеквадратичное отклонение.
Вот сам класс:

data = []
def __init__(self, data):
self.data = data
def dispersia(self):
return self.expected_value(map(lambda x: x*x, self.data)) - self.expected_value(self.data)**2
def expected_value(self,data):
return sum(data)/len(data)
В конструктор попадает list. Далее при вызове dispersia() получаю ошибку:
return sum(data)/len(data)
TypeError: object of type 'map' has no len()
Получается функция map возвращает не list объект, а что-то другое? Как мне лучше решить эту задачку? А заодно объясните, в чем я ошибаюсь)



Офлайн

#2 Июль 24, 2011 06:19:22

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9963
Репутация: +  856  -
Профиль   Отправить e-mail  

Object type 'map' has no len()

>>> lst = map(lambda x: x, 'abc')
>>> lst
<map object at 0xb73fc8ac>
>>> len(lst)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: object of type 'map' has no len()
>>> dir(lst)
['__class__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
>>> lst = list(lst)
>>> len(lst)
3
>>>



Офлайн

#3 Июль 24, 2011 07:43:57

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Object type 'map' has no len()

py.user.next хотел сказать: в третьем map возвращает не list а итератор



Офлайн

#4 Июль 24, 2011 14:36:04

Kein
От:
Зарегистрирован: 2011-07-24
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Object type 'map' has no len()

Спасибо, теперь ясно)



Офлайн

#5 Июль 25, 2011 05:44:12

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9963
Репутация: +  856  -
Профиль   Отправить e-mail  

Object type 'map' has no len()

там ещё есть инфа
если ты хочешь узнать, сработает ли функция len() для чего-либо, то используй dir() для просмотра всех методов объекта
если там есть __len__, то сработает len()
если там есть __hash__, то сработает hash()
а ещё можно посмотреть, что там есть ещё
например, сделай dir(1) и увидишь, какие методы скрыты в обычном целом



Отредактировано (Июль 25, 2011 05:47:03)

Офлайн

#6 Июль 25, 2011 09:02:31

Kein
От:
Зарегистрирован: 2011-07-24
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Object type 'map' has no len()

py.user.next
какие методы скрыты в обычном целом
Спасибо, там будет намного проще) Тем более частенько почему-то недоступен docs.python.org



Офлайн

#7 Июль 28, 2011 02:19:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9963
Репутация: +  856  -
Профиль   Отправить e-mail  

Object type 'map' has no len()

Тем более частенько почему-то недоступен docs.python.org
там можно скачать документацию
http://docs.python.org/py3k/download.html
http://docs.python.org/download.html
лучше в html - удобнее навигация



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version