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

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

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

39 ответов

27 просмотров

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

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 используют

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта