Шаг назад во время итерации
Так вот, уже при следующем i оно будет равно не 2, а 3 так как next(l_iter) перешло на следующий элемент. Можно как-то сделать шаг назад в итерации?
Отслеживать
10.1k 5 5 золотых знаков 24 24 серебряных знака 68 68 бронзовых знаков
задан 14 дек 2020 в 8:10
random name random name
41 5 5 бронзовых знаков
Нет. Можно только создать новый итератор и запустить по новой, остановить итератор, но нельзя откатываться назад.
14 дек 2020 в 8:14
Ну, запоминайте текущее значение итератора в какой-нибудь переменной. На следующей итерации эта переменная будет равна предыдущему шагу.
14 дек 2020 в 8:24
Спасибо Вам большое
14 дек 2020 в 9:02
Значение итератора можно запомнить в другой переменной, но обе переменные будут разделять один и тот же итератор: > i = iter([1, 2, 3]); j = i; next(i); next(j); next(i) -> 1 2 3 .
14 дек 2020 в 11:12
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Давайте оттолкнёмся от задачи: нужно перебрать последовательные пары из списка (или любой последовательности). К сожалению, в стандартной библиотеке такой функциональности нет. Справимся сами:
def pairs(seq): it = iter(seq) try: prev = next(it) except StopIteration: return for item in it: yield prev, item prev = item
> print(tuple(pairs([1, 2, 3, 4]))) [(1, 2), (2, 3), (3, 4)]
Теперь ваша задача решается просто:
l = [0, 1, 2, 3, 4, 1, 2, 1] for i, j in pairs(l): if i == 1 and j == 2: print('found')
Как в реплит вернуться на шаг назад
Почти все вносимые в изображения изменения могут быть отменены. Вы можете отменить последнее действие, выбрав в меню изображения Правка → Отменить , но эта операция применяется так часто, что стоит запомнить комбинацию клавиш Ctrl + Z .
Сама отмена может быть отменена. После отмены действия вы можете вернуть его выбрав в меню изображения пункт Правка → Повторить , или с использованием клавиши быстрого доступа, Ctrl + Y . Часто это полезно при оценке эффекта какого-либо действия, с помощью его неоднократной отмены и повтора. Обычно это происходит очень быстро, без дополнительного расхода ресурсов или изменения истории отмены, поэтому никакого вреда в этом нет.
Если вы отмените одно или несколько действий и затем произведёте какую-либо операцию кроме отмены и возвращения, возможности вернуть те действия больше не будет: они потеряны навсегда. Решением проблемы является дублирование изображения и работа с копией. (При этом не выполняйте пробные операции с оригиналом, поскольку история действий при дублировании не копируется.)
Если вы часто используете отмену и возврат на множество шагов за раз, возможно будет более удобно работать с диалогом Истории отмен — прикрепляемой панелью, которая показывает небольшие эскизы каждой точки в истории отмены, позволяя вам перемещаться назад или вперёд к точке, по которой вы щёлкаете.
Действие отмены выполняется для каждого конкретного изображения: «история действий» является одним из компонентов изображения. В этих целях GIMP выделяет определённый объём памяти для каждого изображения. Увеличить или уменьшить объём выделяемой памяти можно в «Параметрах» в разделе Системные ресурсы. Здесь присутствуют две важные переменные: минимальное число уровней отмены , которое GIMP будет поддерживать вне зависимости от того, сколько эти уровни будут потреблять памяти, и максимальное количество памяти для отмены , при превышении этого объёма GIMP начнёт удалять самые старые элементы в истории отмены действий.
Хотя история действий является компонентом изображения, она не сохраняется вместе с ним в собственный формат GIMP с расширеним XCF (хотя все остальные свойства изображения сохраняются). Когда изображение будет открыто вновь, история действий будет пуста.
Реализация истории действий в GIMP довольно сложна. Многие операции (такие как изменение видимости слоя) требуют очень мало памяти для возможной отмены, поэтому вы можете выполнить большое их количество до того, как они начнут пропадать из истории действий. Некоторые операции (и снова изменение видимости слоя) являются сжатыми , поэтому выполнение их несколько раз подряд производит лишь одну точку в истории действий. Тем не менее, иные операции потребляют много памяти для возможной отмены. В качестве примера можно привести практически любой фильтр: поскольку фильтры реализованы как расширения, ядро GIMP не может доподлинно узнать, что они изменили. Таким образом, не существует иного способа отменить такое действия кроме как запомнить содержимое затронутого слоя до и после операции. Вы можете выполнить ограниченное количество таких операций прежде, чем они будут удалены из истории действий.
3.1. Неотменяемые операции
Большинство действий, изменяющих изображение, могут быть отменены. Но некоторые отменить невозможно. Такие операции как сохранение изображение в файл, дублирование изображения, копирование изображения, копирование части изображения в буфер обмена и т.д. Сюда также относятся операции, включающие в себя воздействие на отображение без изменения данных изображения. Наиболее существенным примером является масштабирование отображения. Тем не менее, существуют и исключения: переключение видимости быстрой маски может быть отменено, если между переключениями не изменялись данные изображения.
Существует несколько важных действий, которые изменяют изображение, но не могут быть отменены.
Закрытие изображения
История отмены действий является компонентом изображения, поэтому при закрытии изображения и освобождении ресурсов, вся история пропадает. Именно поэтому GIMP всегда выводит запрос подтверждения закрытия изображения, за исключением случаев, когда изображение не не изменялось со времени последнего сохранения.
« Возвращение » означает перезагрузку изображения из файла. GIMP реализует это с помощью закрытия изображения и создания нового изображения, в следствии чего теряется история отмен. По этой причине, если изображение подверглось изменениям, GIMP всегда будет спрашивать у вас подтверждения перед выполнением возвращения.
Некоторые инструменты требуют выполнения комплексного набора манипуляций перед их применением, но позволяют отменить лишь целые операции вместо отдельных элементов. Например, Ножницы позволяют вам создавать закрытые контуры щелчками по различным точкам изображения с последующим щелчком внутри контура для создания выделения. Вы не можете отменить отдельные щелчки: отмена после завершения вернет вас к начальной точке. В другом примере, когда вы работаете с инструментом Текст, вы не можете отменить отдельные буквы, смену шрифта и т.д.: отмена после завершения операций удалит только что созданный текстовый слой.
Фильтры, и другие производимые дополнениями или скриптами действия, могут быть отменены также как и реализовываемые ядром GIMP действия, но при условии правильного использования ими функций отмены GIMP . Если код неправилен, дополнение потенциально может испортить историю отмен, так что не только действия дополнения, но и предыдущие действия более не смогут правильно отменяться. Все поставляемые с GIMP скрипты и дополнения достоверно работают правильно, однако очевидно, что нет гарантий для дополнение, полученных из других источников. Также, даже если код является правильным, отмена дополненияво время его работы иногда может оставить историю отмен повреждённой, поэтому лучше этого избегать, если вы случайно не сделали чего-то с плохими последствиями.
Replit: руководство для начинающих

Replit — популярная бесплатная онлайн-IDE, требующая совсем небольшой настройки перед созданием проектов. Этот редактор поддерживает больше 50 языков и используется на многих курсах по программированию.
В этой статье я расскажу, как начать работать в Replit, и познакомлю вас с его базовыми функциями.
Как создать аккаунт в Replit
Для начала заходим на домашнюю страницу Replit. В правом верхнем углу кликните Sign Up. Для регистрации на сайте можно ввести username, email и пароль, а можно воспользоваться аккаунтом в Google, Facebook или GitHub.

Войдя, вы попадете на домашнюю страницу своего аккаунта.

Что такое Repl и как его создать?
Repl расшифровывается как «read-eval-print loop». Это интерактивная среда программирования, в которой создавать маленькие проекты.
В Replit есть три способа создания нового repl.
Первый — кликнуть кнопку Create Repl в верхнем левом углу домашней страницы.

Также можно кликнуть значок «+» под разделом Create.

Третий вариант — кликнуть «+» в верхнем правом углу.

После этого вы сможете выбрать один из множества шаблонов Replit, включая Python, Node, Java, HTML & CSS, Ruby и многие другие.

Выбрав язык, выберите имя для своего проекта.

В бесплатной версии Replit нельзя создавать приватные проекты. Если вам нужен приватный repl, придется заплатить за Pro-версию.

Выбрав имя, нажмите голубую кнопку Create Repl.

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

Базовые функции редактора Replit
В этом разделе мы пройдемся по базовым функциям, которыми вы можете воспользоваться в редакторе Replit. Сюда входит отладчик, файлы и папки, контроль версий, юнит-тесты и т. п.
Файлы и папки
Чтобы добавить в проект файлы и папки, можно кликнуть на иконку файла в верхнем левом углу.

Для добавления файла кликните иконку Add file. Рядом с ней есть иконка Add folder — для создания папок.


Если хотите загрузить файлы или папки со своего компьютера, нажмите иконку с тремя точками.


Для удаления файлов или папок нажмите иконку с тремя точками, расположенную рядом с файлом, который хотите удалить. Откроется список опций.

Контроль версий в Replit
Вы также можете подключиться к своему GitHub-аккаунту и создать репозиторий для этого проекта. На момент написания этой статьи эта функция все еще в бете.
Сначала нажмите на значок контроля версий с левой стороны страницы редактора. Вы увидите возможность для подключения к GitHub-аккаунту.


Вам будет предложено разрешить Replit создавать новые репозитории на GitHub.

Введите ваши данные для входа на GitHub.

Если вы подключили несколько GitHub-аккаунтов, выберите тот, куда хотите установить Replit.

Затем нужно будет авторизоваться в Replit для установки.

После установки и авторизации вы будете перенаправлены обратно в редактор Replit.
Теперь все изменения будут отслеживаться и вы сможете пушить их на GitHub. Напишите короткое сообщение коммита и кликните кнопку Commit & push.

Все свои сообщения коммитов вы сможете видеть в панели контроля версий.

Нажмите кнопку Connect to GitHub, чтобы создать новый репозиторий.

Вы можете добавить описание репозитория, а затем нажать кнопку Create GitHub repository.

Когда репозиторий будет создан, вы увидите его имя в панели контроля версий.

Он также будет виден на GitHub.

Отладчик
В редакторе Replit есть инструмент отладки. С его помощью можно проходить свой код строчка за строчкой, отслеживать, что происходит, и исправлять ошибки.
Эта функция тоже пока в бете. Найти ее можно с левой стороны страницы редактора.


Установка пакетов в Replit
Вы можете устанавливать различные пакеты в свои проекты, например, morgan, express или cors. Для этого воспользуйтесь панелью Packages в левой части страницы редактора.

Найдите пакет, который хотите установить, и нажмите значок «+».

В правой стороне экрана расположена консоль. В ней вы можете увидеть, что пакет устанавливается.

Secrets (переменные окружения)
Replit больше не поддерживает создание .env-файлов.

Вместо этого вам придется использовать вкладку Secrets, где вы сможете хранить ваши переменные окружения. Иконка Secrets находится в левой части страницы редактора.

В поле ввода Key нужно вписать имя своего ключа, а в поле value — его значение. Затем нажмите Add new secret.

После этого вы увидите новосозданную переменную окружения во вкладке Secrets.

Если вам потребуется отредактировать переменную, просто наведите мышь на ее имя и нажмите значок карандаша.


Теперь вы можете использовать эту переменную окружения в своем коде.
Кастомизация Replit
Если вы хотите настроить редактор для своего проекта, нажмите на значок-шестеренку в левой части страницы редактора.


База данных Replit
Если хотите использовать хранилище Replit для ключей и значений, нажмите значок Database в левой части страницы редактора.


Узнать больше об использовании Replit Database можно в документации.
Как добавить в Replit юнит-тесты
Если вы хотите добавить в свой проект юнит-тесты, кликните соответствующий значок («галочку») в левой части страницы редактора.

Затем нажмите кнопку Add test.

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

После этого нажмите кнопку Run tests.

Запущенные тесты и результат вы увидите в консоли.

Как использовать кнопку Run в Replit
Если вы хотите запустить сервер для своего проекта, кликните на зеленую кнопку Run вверху страницы редактора.

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

Как очистить консоль в Replit
Чтобы очистить консоль, нажмите крестик в углу окна консоли.

Что собой представляет консоль Shell?
Если вам нужно вводить команды, например, для удаления или добавления папок, вы можете воспользоваться консолью оболочки.

Как добавить в Replit кастомный домен?
В превью можно добавить кастомный домен для своего проекта. Для этого нажмите на иконку карандаша рядом с URL превью.

После этого можно будет добавить ваш домен и информацию CNAME:

Как опубликовать проект в Replit?
Завершив работу над проектом, вы сможете его опубликовать и поместить в коллекцию Replit Apps.
Для начала кликните на имя проекта в верхнем левом углу.

Вы сможете добавить короткое описание проекта и нажать кнопку Publish.

После этого можно будет вставить описание, добавить обложку и теги. Когда закончите, нажмите кнопку публикации.


Если захотите опубликовать обновление, опять же кликните на своем проекте, а затем — Publish update.


Допустим, вы хотите изменить статус проекта и убрать его из опубликованных. Нажмите иконку с тремя точками в правом углу страницы публикации и выберите опцию Unpublish.



Как поделиться ссылкой на проект на Replit
Если вы хотите расшарить URL проекта, сперва нужно кликнуть зеленую кнопку Run, а затем — иконку Open in new tab.


Ваша страница откроется в новой вкладке.

Если хотите поделиться URL, ведущий на редактор и окно предпросмотра, просто используйте ссылку в адресной строке браузера.

Перейдя по ссылке, вы увидите это:

Делиться этой ссылкой имеет смысл, если вам нужна помощь в работе над проектом ы вы хотите показать другим разработчикам свой код и файлы. Пока вы не поделитесь своим проектом, другие люди не увидят ваших переменных окружения.
Как пригласить других людей редактировать ваши repl
В Replit есть специальная функция, позволяющая пригласить в проект других разработчиков.
Нажмите кнопку Invite в правом верхнем углу страницы редактора.

В поле поиска можно добавить пользователей Replit или email-адреса людей, которых вы хотите пригласить.

Затем нажмите синюю кнопку Invite.

Вы увидите приглашение в ожидающих подтверждения.

Также можно послать специальную ссылку пользователю, которого хотите пригласить в проект. Кликните кнопку Generate a join link.

Если захотите удалить кого-то из приглашенных, нажмите крестик рядом с его именем.

Что дает платная подписка на Replit?
Тарифный план Hacker предполагает больше памяти и места, более высокую скорость и приватные repl.
План Teams предназначен для студентов и учителей, совместно работающих над учебными проектами.
Я надеюсь, это руководство по Replit для начинающих вам пригодится.