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

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

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

39 ответов

9 просмотров

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

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

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

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

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
Всем привет, после Си стоит учить плюсы или лучше на раст перейти?
Linus
8
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
или вы считаете муит дает знание?
супер_лох_3000 альфа версия
12
значить например он учился в СДУ то получается он особенный?)
Asets Serikov
11
Карта сайта