170 похожих чатов

Скажите что происходит когда у последовательности вызывают метод iter()? a

= [1, 2, 3].__iter__(). Как например у списка реализован метод iter внутри? Каким образом он из списка формирует объект итератор с методом next()?

39 ответов

26 просмотров

а как бы ты реализовал итератор для списка?

Unit- Автор вопроса
Alex
а как бы ты реализовал итератор для списка?

Я бы в объекте итератор хранил ссылку на исходный список и методом next перемещался по его элементам. Но это же бессмысленно

к слову вызывать метод __iter__() напрямую не принято. в питоне есть встроенная функция iter() которая возвращает итератор для переданного объекта.

Unit- Автор вопроса
Alex
почему бессмысленно?

Получается в python пока у последовательности не вызван метод iter ее нельзя перебирать?

Unit
Получается в python пока у последовательности не в...

смотря что ты подразумеваешь под "перебирать".

Unit- Автор вопроса
Unit- Автор вопроса
Unit
Я бы в объекте итератор хранил ссылку на исходный ...

Получается если я захочу реализовать итератор для множества, то мне его нужно преобразовать в список? Или как будет правильней?

Unit- Автор вопроса
Alex
зачем?

Ведь множество нельзя перебирать через индекс

Unit
Ведь множество нельзя перебирать через индекс

у множества есть своя реализация итератора для множества

Unit
Ведь множество нельзя перебирать через индекс

для того, чтобы пройти по множеству уже есть итератор

Unit- Автор вопроса
Unit
Вот как он устроен мне и интересно

перебирает внутреннюю хеш-таблицу, в общем-то тоже по индексам.

Unit
Вот как он устроен мне и интересно

он скорее всего реализован на сишной стороне и обходит хеш-таблицу на которой построен сет

Unit- Автор вопроса
Alex
перебирает внутреннюю хеш-таблицу, в общем-то тоже...

а как мне реализовать свой итератор для множества? Допустим я хочу, чтобы он перебирал его в обратную сторону

Unit
а как мне реализовать свой итератор для множества?...

никак. у тебя нет доступа к внутренней реализации множеств.

Unit
а как мне реализовать свой итератор для множества?...

в множестве не нужно знать порядок элементов, он грубо говоря рандомен

Unit
а как мне реализовать свой итератор для множества?...

обратный итератор для множества не имеет никакого смысла

Alex
он неопределен, но неслучаен.

проще сказать "грубо говоря рандомен"

rasput
проще сказать "грубо говоря рандомен"

не одному же тебе цепляться к словам.

rasput
проще сказать "грубо говоря рандомен"

Это не огрубление, это неправда. Если бы он был рандомен, то каждая итерация одного и того же множества производила бы новый результат.

Unit- Автор вопроса
Alex
Это не огрубление, это неправда. Если бы он был ра...

Правильно ли я предполагаю, что каждый элемент множества хранит ссылку на следующий элемент, а ссылку на предыдущий не имеет?

Unit
Правильно ли я предполагаю, что каждый элемент мно...

Не знаком с теорией и реализацией этого типа данных

Андрей
нет, это не java списки)

казалось бы при чем тут Java

Unit
Правильно ли я предполагаю, что каждый элемент мно...

он вообще не имеет не каких ссылок, множество это неупорядочнаая колекция уникальных элементов)

Alex
казалось бы при чем тут Java

списки в java. Каждый элемент имеет ссылку на следующий)

Unit- Автор вопроса

как тогда итератор может перебирать элементы множества по порядку?

Alex
Не знаком с теорией и реализацией этого типа данны...

там хэш таблица внутри...поэтому и о(1)

electron!c
там хэш таблица внутри...поэтому и о(1)

С реализацией хештаблиц я тоже знаком плохо. Знаю что существует множество способов реализации этого типа данных.

Unit
как тогда итератор может перебирать элементы множе...

У множества есть какой-то порядок по которому отработает iter() потому что внутрях у неё хеш-таблица, а хеш-таблица это в принципе массив по которому можно от начала до конца пройтись. Но этот порядок зависит от того что до этого делали с множеством и в общем случае он заранее не известен

Андрей
списки в java. Каждый элемент имеет ссылку на след...

зачем тебе ссылки, когда следущий всегда index + 1? + прочитай про iter, next и тп

Андрей
списки в java. Каждый элемент имеет ссылку на след...

Только LinkedList. Чаще всё же ArrayList используют

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
10
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
кто то в лазаре смог отключить в HeapTrc отчёт об утечках если они не обнаружены? SetHeapTraceOutput('leak'); не помогает, но и не ругается 😞 лазарь 3.4
Mikhail Tchervonenko
7
Карта сайта