Да, там выходит ошибка "AttributeError: 'int' object has no attribute 'value'". Должно быть yield node, тогда работает. Потому что итератор возвращает значения в вершинах дерева, а не сами вершины дерева. Но можно переписать код: def __iter__(self): for node in self.left: yield node yield self for node in self.right: yield node И тогда возвращаются узлы. (Но даже здесь yield node, а не yield node.value). 35:26 "Метод iter теперь прекрасен, с этим сложно поспорить" :))
В резюме к итераторам 19:18 на слайде ошибка, не __init__ , а __iter__. Я не совсем понял отличия iterable и iter. К примеру когда мы в цикле обходим список, мы берем итератор у этого и списка и он уже использует метод __next__ ? И каждый раз итератор будет обходить этот список, но когда мы используем функцию iter([1,2,3]), она обходит только один цикл. Я не совсем понял этот момент, каждый раз когда мы вызываем у списка итератор через цикл, нам постоянно приходит новый итератор?
Лекция какая то не полная .Надо искать в интернете class Identity: def __init__(self): self.items = [5, 10, 15] def __contains__(self, target): for item in self.items: if item == target: return True return False и про функция unique не чего не говорил здесь .Что за функция ? Функция unique удаляет повторяющиеся элементы из переданного iterable, но также пропускает (не возвращает) элементы, которые уже есть в seen Это все очень интересно но отсутствуют в лекции !!
Лекции супер.
Только плохо, что не видно, куда указывает на слайдах преподаватель.
32:32 - можно получить, что хотим, используя list(g()) сколько угодно раз, каждый раз создаются новые генераторы.
Что-то там с бинарным деревом не так, каким образом вызывается yield node.value?
скорее всего там должно было быть yeild node, потому что node получает self.value из итератора
Да, там выходит ошибка "AttributeError: 'int' object has no attribute 'value'". Должно быть yield node, тогда работает.
Потому что итератор возвращает значения в вершинах дерева, а не сами вершины дерева.
Но можно переписать код:
def __iter__(self):
for node in self.left:
yield node
yield self
for node in self.right:
yield node
И тогда возвращаются узлы. (Но даже здесь yield node, а не yield node.value).
35:26 "Метод iter теперь прекрасен, с этим сложно поспорить" :))
Генератор в методе __iter__ класса BinaryTree не позволит сделать обход дерева повторно. Верно?
В резюме к итераторам 19:18 на слайде ошибка, не __init__ , а __iter__.
Я не совсем понял отличия iterable и iter. К примеру когда мы в цикле обходим список, мы берем итератор у этого и списка и он уже использует метод __next__ ? И каждый раз итератор будет обходить этот список, но когда мы используем функцию iter([1,2,3]), она обходит только один цикл. Я не совсем понял этот момент, каждый раз когда мы вызываем у списка итератор через цикл, нам постоянно приходит новый итератор?
+Sergei Lebedev спасибо, теперь все понял. У вас самые лучшие лекции о python в рунете.
То есть по умолчанию __iter__ не итератор с произвольным доступом?..
Здравствуйте, а домашние задания доступны только очным студентам или можно формулировки заданий где нибудь в открытом доступе найти?
Домашние задания доступны только студентам CS центра, да. Мы сами не публиковали формулировки в открытый доступ.
Лекция какая то не полная .Надо искать в интернете
class Identity:
def __init__(self):
self.items = [5, 10, 15]
def __contains__(self, target):
for item in self.items:
if item == target:
return True
return False
и про функция unique не чего не говорил здесь .Что за функция ?
Функция unique удаляет повторяющиеся элементы из переданного iterable, но также пропускает (не возвращает) элементы, которые уже есть в seen
Это все очень интересно но отсутствуют в лекции !!
Видно что он хороший программист, английский знает, но преподавать не его
Бред. Почему?
@@mkhnuser очень много понтуется .. видно что может чесать языком .. и ощущение что вроде бы знает .. ему бы в политику ..
@@boobubuo клоун)