Одним из главных достоинств Python является выразительность кода. Не последнюю роль в этом играет возможность удобной работы с коллекциями и последовательностями различного вида: перебор элементов списка по одному, чтение файла по строкам, обработка всех ключей и значений в словаре. Эти и многие другие подобные задачи в Python помогает решить так называемый протокол итераторов (Iterator protocol). Именно этот протокол обеспечивает работу цикла for
, устанавливает по каким объектам можно итерироватьсяЧитать полностью »
Рубрика «итераторы»
10 итераторов, о которых вы могли не знать
2022-11-05 в 8:06, admin, рубрики: itertools, python, генераторы, итераторыПоговорим о фичах в предварительной версии C# 11
2022-02-28 в 20:55, admin, рубрики: .net, C#, csharp, null, open source, skillfactory, Блог компании SkillFactory, дизайн, интерполяция, итераторы, проверки, Программирование, строки, строки кода
К старту курса по разработке на C# рассказываем о новых конструкциях в предварительной версии языка C# 11. Среди них шаблоны списка, проверка Parameter на null и возможность переноса строки при интерполяции строк. За подробностями приглашаем под кат.
Golang DevDay: 31 мая, Новосибирск + трансляция
2019-05-16 в 4:33, admin, рубрики: devday, Go, golang, meetup, Анализ и проектирование систем, Блог компании 2ГИС, взаимодействие, итераторы, конференции, конференция, моделирование, моделирование предметной области, ПрограммированиеОбычно с приходом тепла DevDay уходит на каникулы. На этот раз решили, что ждать осени — непозволительно. В последний день весны приглашаем вас присоединиться к Golang DevDay. Будет и мягкий переход «из не-Go в Go» для тех, кто только присматривается к языку, и выступления похардкорнее.
Под катом подробности, расписание и ссылка на регистрацию.
Читать полностью »
Новинки JavaScript: Асинхронные итераторы
2017-03-15 в 10:40, admin, рубрики: ECMAScript, javascript, node.js, генераторы, итераторы, предложенияВ этом небольшом посте я хочу рассказать об одном интересном предложении (англ. proposal) в стандарт EcmaScript. Речь пойдёт об асинхронных итераторах, о том, что это такое, как ими пользоваться и зачем они вообще нужны простому разработчику.
Асинхронные итераторы, это расширение возможностей обычных итераторов, которые с помощью цикла for-of
/for-await-of
позволяют пробежать по всем элементам коллекции.
Использование ES6 генераторов на примере koa.js
2016-10-13 в 18:00, admin, рубрики: ES6, javascript, koa, koa.js, node.js, redux, Блог компании DataArt, генераторы, итераторы, фронтенд
Автор: Александр Трищенко, Senior Front-end Developer, DataArt
Содержание:
• Итераторы. Генераторы.
• Использование генераторов (Redux, Koa)
• Зачем нам использовать koa.js
• Будущее. Async Await и koa.js 2.x
Генераторы — новая спецификация, новая возможность, которую мы можем использовать в ECMAScript 6. Статью я начну с рассказа об итераторах, без которых понять генераторы не получится, расскажу непосредственно про спецификацию и о том, что такое генераторы вообще, про их использование в реальных кейсах. Рассмотрим два примера: React + Redux как фронтненд-случай и koa.js в качестве бэкенда. Затем подробнее остановлюсь на koa.js, будущем JavaScript, на асинхронных функциях и koa.js 2.Читать полностью »
Rust: for и итераторы
2016-07-29 в 12:58, admin, рубрики: for loop, Rust, итераторы, перевод, Программирование, системное программирование, циклы(предыдущая статья)
В данной статье мы обсудим for циклы, а так же родственные понятия итераторов и «итерируемых объектов».
В зависимости от вашего предыдущего опыта с другими языками программирования данные концепции могут показаться очень знакомыми в плане синтаксиса и семантики, или же совершенно новыми и непонятными. Наиболее близкие их аналоги можно найти в Питоне, но, думаю, программисты на Java, C# или же (современном) C++ так же увидят много пересечений с тем что есть в их языках.
Читать полностью »
Сортировка на односвязном списке за O(nlogn) времени в худшем случае с O(1) дополнительной памяти
2015-01-06 в 17:35, admin, рубрики: bfprt, flat quick sort, median of medians, Алгоритмы, итераторы, односвязные списки, сортировкиВсе началось с данного топика на сайте gamedev.ru. Топикстартер предложил найти сортировку, которая обладает следующими свойствами:
- Время выполнения — гарантированные O(nlogn).
- Использование O(1) дополнительной памяти.
- Применимость для сортировки данных в односвязных списках.
Оговорки на все три ограничения:
- Гарантированные O(nlogn) означают, что, например, среднее время быстрой сортировки не подходит — должно получаться O(nlogn) для любых, даже самых худших входных данных.
- Рекурсию использовать нельзя, поскольку она подразумевает O(logn) памяти на хранение стека рекурсивных вызовов.
- Произвольного доступа к элементам сортируемого массива нет, мы можем двигаться итератором от любого элемента только к соседнему (за O(1)), причем только в одном направлении (вперед по списку).
Вся информация, которую мы знаем об элементах массива — это то, что они все образуют линейно упорядоченное множество. Все, что мы можем делать — это сравнивать два элемента массива и менять их местами.
Под катом можно узнать, что в итоге получилось у нас.
Challenge. Прежде чем заглядывать под кат, предлагаю сначала самостоятельно подумать над алгоритмом. Если придумается что-то круче нашего варианта — напишите в комментариях.
Размышления о стандартной библиотеке JavaScript. Core.js
2014-11-18 в 11:57, admin, рубрики: console, Dict, ecmascript 6, harmony, javascript, map, node.js, promise, setImmediate, standard library, Веб-разработка, итераторы, стандартная библиотекаОдин пацан писал все на JavaScript, и клиент, и сервер, говорил что нравится, удобно, читабельно. Потом его в дурку забрали, конечно.
— С просторов интернета
К чему это я? Занятная штука — JavaScript. Основа современного web и на фронтэнде альтернатив как таковых не имеет.
JavaScript это, в том числе, и стандартная библиотека, о которой здесь и пойдёт речь. Под стандартной библиотекой я подразумеваю модули, конструкторы, методы, что должны присутствовать на любой платформе, будь то браузер или сервер, без лишних действий со стороны программиста, не включая API, специфичный для платформы. Даже если вы пишите не на JavaScript, а на языке в него компилируемом, скорее всего, вам придется иметь дело с его стандартной библиотекой.
Ванильная стандартная библиотека JavaScript, в целом, неплоха. Это не только стандартная библиотека по спецификации языка ECMA-262 актуальных версий — от 3 до черновика 6. Часть API вынесена в отдельные спецификации, например, API интернационализации ECMA-402. Многие возможности, без которых сложно представить JavaScript, например, setTimeout
, относятся к web-стандартам. Консоль не стандартизована вовсе — приходится полагаться на стандарт де-факто.
Вот только не такая уж она и стандартная — везде разная. Есть старые IE, в которых из коробки мы получаем стандартную библиотеку ES3 90-бородатого года даже без Array#forEach, Function#bind, Object.create
и консоли, и есть, например, Node.js, на которой многие уже вовсю используют возможности грядущего ES6.
Хочется иметь универсальную, действительно стандартную библиотеку, как на сервере, так и в любом браузере, максимально соответствующую современным стандартам, а также реализующую необходимый функционал, что (пока?) не стандартизован. Статья посвящена библиотеке core.js — реализация моих соображений по поводу стандартной библиотеки JavaScript. Кроме того, эта статья еще и шпаргалка по современной стандартизованной стандартной библиотеке JavaScript и заметки о её перспективах.
Содержание, или что получим на выходе:
-
Подходы
-
Часть первая: Костыли
- ECMAScript 5
- ECMAScript 6
- ECMAScript 6: Символы
- ECMAScript 6: Коллекции
- ECMAScript 6: Итераторы
- ECMAScript 6: Обещания
- Mozilla JavaScript: Статические версии методов массива
- Отложенное исполнение: setTimeout, setInterval, setImmediate
- Консоль
-
Часть вторая: Велосипеды
- Классификация данных
- Словари
- Частичное применение
- Форматирование даты
- Объектное API
- Массивы
- Числа
- Экранирование спецсимволов
-
Заключение
Механизм фильтров Collection
2014-06-11 в 12:11, admin, рубрики: javascript, node.js, Веб-разработка, итераторы, коллекции, функциональное программирование, метки: javascript, node.js, итераторы, коллекции, функциональное программированиеЭта статья является продолжением "Итерируем всё вместе с Collection" и здесь я расскажу о встроенном механизме Collection — фильтрах.
Итерируем всё вместе с Collection
2014-06-10 в 10:03, admin, рубрики: javascript, node.js, Веб-разработка, итераторы, коллекции, функциональное программирование, метки: javascript, node.js, итераторы, коллекции, функциональное программированиеВ современном JavaScript существует целый пласт различных видов итерируемых структур данных:
- Array
- TypedArrays
- Object
- Map
- Set
- String
А также появились генераторы и универсальный протокол , который позволят итерировать что угодно и как угодно. И в тоже время для некоторых типов данных (в основном для массивов) определены различные методы для удобной функциональной работы и простого итерирования, например, forEach, map или reduce, и всё было бы хорошо, однако:
- Большинство методов определены только для массивов;
- Определяемое API слишком примитивно и не покрывает целый ряд задач;
- До сих пор скорость выполнения нативных итераторов далека от идеала и существенно уступает реализации на циклах.