Ускоряем код с помощью векторизации
Одним из приемов для ускорения работы циклов является векторизация вычислений, т. е. использование функций, которые поддерживают операции над векторами.
Вообще лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией my_func мы могли бы вызвать ее в цикле для каждого элемента списка, но гораздо проще использовать vectorize.
По сути, vectorize преобразует функцию таким образом, что она начинает принимать весь вектор целиком, а не отдельный его элемент. Надо помнить, что такой подход не всегда приводит к значительному ускорению.
#python
Подписывайтесь на канал 👉@cod_academy
Одним из приемов для ускорения работы циклов является векторизация вычислений, т. е. использование функций, которые поддерживают операции над векторами.
Вообще лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией my_func мы могли бы вызвать ее в цикле для каждого элемента списка, но гораздо проще использовать vectorize.
По сути, vectorize преобразует функцию таким образом, что она начинает принимать весь вектор целиком, а не отдельный его элемент. Надо помнить, что такой подход не всегда приводит к значительному ускорению.
#python
Подписывайтесь на канал 👉@cod_academy
Содержимое директории
Java позволяет получить имена всех подкаталогов и файлов в папке в виде массива, который затем можно последовательно просмотреть.
#java
Подписывайтесь на канал 👉@cod_academy
Java позволяет получить имена всех подкаталогов и файлов в папке в виде массива, который затем можно последовательно просмотреть.
#java
Подписывайтесь на канал 👉@cod_academy
Алгоритм fill
Присваивает всем элементам в диапазоне [first,last) заданное значение.
#cpp
Подписывайтесь на канал 👉@cod_academy
Присваивает всем элементам в диапазоне [first,last) заданное значение.
#cpp
Подписывайтесь на канал 👉@cod_academy
Explicit Conversion Flag
Флаг явного преобразования используется для преобразования значения поля format перед его непосредственным форматированием.
Это поле можно использовать для переопределения поведения format для какого либо конкретного типа и форматирования значения. В настоящее время распространены два явных флага преобразования:
!r – преобразует значение в строку, используя функцию repr()
!s – преобразует значение в строку, используя функцию str()
В примере, в случае с флагом !r строка 'Hello' будет напечатана с кавычками в поле шириной не менее 20 символов, а в случае с флагом !s – без кавычек (в более удобном для чтения виде).
#python
Подписывайтесь на канал 👉@cod_academy
Флаг явного преобразования используется для преобразования значения поля format перед его непосредственным форматированием.
Это поле можно использовать для переопределения поведения format для какого либо конкретного типа и форматирования значения. В настоящее время распространены два явных флага преобразования:
!r – преобразует значение в строку, используя функцию repr()
!s – преобразует значение в строку, используя функцию str()
В примере, в случае с флагом !r строка 'Hello' будет напечатана с кавычками в поле шириной не менее 20 символов, а в случае с флагом !s – без кавычек (в более удобном для чтения виде).
#python
Подписывайтесь на канал 👉@cod_academy
Метод replace()
Заменяет символами подстроки данной строки буфера (StringBuffer) заданные символы в строке. Другими словами метод позволяет в Java заменить символы в строке между указанными начальным и конечным индексами.
Параметры:
start — начальный индекс, включительно;
end — конечный индекс, не включая;
str — строка, которая заменит предыдущее содержимое.
#java
Подписывайтесь на канал 👉@cod_academy
Заменяет символами подстроки данной строки буфера (StringBuffer) заданные символы в строке. Другими словами метод позволяет в Java заменить символы в строке между указанными начальным и конечным индексами.
Параметры:
start — начальный индекс, включительно;
end — конечный индекс, не включая;
str — строка, которая заменит предыдущее содержимое.
#java
Подписывайтесь на канал 👉@cod_academy
set::erase()
Функция erase() используется для удаления элементов из контейнера по указанной позиции или диапазону.
#cpp
Подписывайтесь на канал 👉@cod_academy
Функция erase() используется для удаления элементов из контейнера по указанной позиции или диапазону.
#cpp
Подписывайтесь на канал 👉@cod_academy
Вычисляем размер объектов в памяти
Чтобы вычислить размер какого-либо объекта, можно воспользоваться функцией sys.getsizeof(object[, default]). Поскольку Python написан в полном соответствии с парадигмой ООП, таким объектом может быть все что угодно.
Однако, следует помнить, что хотя все built-in (встроенные) объекты и вернут правильный размер, в общем случае это не должно быть верно для каких-либо пользовательских объектов.
Аргумент default позволяет определить значение, которое будет возвращено, если тип объекта не предоставляет средства для извлечения размера и вызовет TypeError .
Функция getsizeof вызывает метод sizeof объекта и добавляет дополнительные служебные данные сборщика мусора, если конечно объект управляется сборщиком мусора.
#python
Подписывайтесь на канал 👉@cod_academy
Чтобы вычислить размер какого-либо объекта, можно воспользоваться функцией sys.getsizeof(object[, default]). Поскольку Python написан в полном соответствии с парадигмой ООП, таким объектом может быть все что угодно.
Однако, следует помнить, что хотя все built-in (встроенные) объекты и вернут правильный размер, в общем случае это не должно быть верно для каких-либо пользовательских объектов.
Аргумент default позволяет определить значение, которое будет возвращено, если тип объекта не предоставляет средства для извлечения размера и вызовет TypeError .
Функция getsizeof вызывает метод sizeof объекта и добавляет дополнительные служебные данные сборщика мусора, если конечно объект управляется сборщиком мусора.
#python
Подписывайтесь на канал 👉@cod_academy
👍1
Удалённая работа и фриланс становятся всё более популярными. Рынок заполнился горе-фрилансерами, которые демпенгуют и забирают себе заказы.
Хочешь научиться работать грамотно, развиваться и забирать самые хорошие заказы?
Подписывайся на блог о правильных подходах в Freelance, аутсорсинге и удалёнке https://news.1rj.ru/str/+q2mh2q6-d9E5YWQy
Также мы будем скидывать заполнившим анкету фрилансерам заказы от проверенных заказчиков. Например сейчас есть много заказов для программистов 😏
Ссылка на канал: https://news.1rj.ru/str/+q2mh2q6-d9E5YWQy
Хочешь научиться работать грамотно, развиваться и забирать самые хорошие заказы?
Подписывайся на блог о правильных подходах в Freelance, аутсорсинге и удалёнке https://news.1rj.ru/str/+q2mh2q6-d9E5YWQy
Также мы будем скидывать заполнившим анкету фрилансерам заказы от проверенных заказчиков. Например сейчас есть много заказов для программистов 😏
Ссылка на канал: https://news.1rj.ru/str/+q2mh2q6-d9E5YWQy
Оптимизация строк
При конкатенации строк на Java с помощью оператора +, например, в цикле for, каждый раз создается новый объект String, что приводит к потере памяти и увеличению времени работы программы.
Также следует избегать создания Java строки с помощью конструктора класса.
#java
Подписывайтесь на канал 👉@cod_academy
При конкатенации строк на Java с помощью оператора +, например, в цикле for, каждый раз создается новый объект String, что приводит к потере памяти и увеличению времени работы программы.
Также следует избегать создания Java строки с помощью конструктора класса.
#java
Подписывайтесь на канал 👉@cod_academy
Алгоритм lexicographic_compare
Совершает лексикографическое сравнение 2 диапазонов
Лексикографическое сравнение - это операция со следующими свойствами:
1)Два диапазона сравниваются поэлементно.
2)Первый элемент несовпадения определяет, какой диапазон лексикографически меньше или больше другого.
3)Если один диапазон является префиксом другого, более короткий диапазон лексикографически меньше другого.
4)Если два диапазона имеют эквивалентные элементы и имеют одинаковую длину, тогда диапазоны лексикографически равны.
5)Пустой диапазон лексикографически меньше любого непустого диапазона.
6)Два пустых диапазона лексикографически равны.
#cpp
Подписывайтесь на канал 👉@cod_academy
Совершает лексикографическое сравнение 2 диапазонов
Лексикографическое сравнение - это операция со следующими свойствами:
1)Два диапазона сравниваются поэлементно.
2)Первый элемент несовпадения определяет, какой диапазон лексикографически меньше или больше другого.
3)Если один диапазон является префиксом другого, более короткий диапазон лексикографически меньше другого.
4)Если два диапазона имеют эквивалентные элементы и имеют одинаковую длину, тогда диапазоны лексикографически равны.
5)Пустой диапазон лексикографически меньше любого непустого диапазона.
6)Два пустых диапазона лексикографически равны.
#cpp
Подписывайтесь на канал 👉@cod_academy
👍1
Автоматический счетчик во время итераций по коллекциям
Привет. Достаточно часто я наблюдаю ситуации, в которых новички создают "костыли", когда им необходим счетчик во время обхода коллекции. И вот решение проблемы.
Итак, встроенная в Python функция enumerate применяется для итерируемых коллекций (строки, списки, словари и другие) и создает объект, который генерирует кортежи, состоящие из двух элементов – индекса элемента и самого элемента.
И это еще не все, enumerate также принимает необязательный второй аргумент, который позволяет указать, с какого числа начинать отсчет. По умолчанию индекс начинается с нуля, но в данном примере я передал единицу.
#python
Подписывайтесь на канал 👉@cod_academy
Привет. Достаточно часто я наблюдаю ситуации, в которых новички создают "костыли", когда им необходим счетчик во время обхода коллекции. И вот решение проблемы.
Итак, встроенная в Python функция enumerate применяется для итерируемых коллекций (строки, списки, словари и другие) и создает объект, который генерирует кортежи, состоящие из двух элементов – индекса элемента и самого элемента.
И это еще не все, enumerate также принимает необязательный второй аргумент, который позволяет указать, с какого числа начинать отсчет. По умолчанию индекс начинается с нуля, но в данном примере я передал единицу.
#python
Подписывайтесь на канал 👉@cod_academy
👍1
Создание объектов только при необходимости
Создание объектов – одна из самых затратных операций в Java. Лучшая практика – создавать их только при необходимости, когда они действительно нужны.
#java
Подписывайтесь на канал 👉@cod_academy
Создание объектов – одна из самых затратных операций в Java. Лучшая практика – создавать их только при необходимости, когда они действительно нужны.
#java
Подписывайтесь на канал 👉@cod_academy
👍1
Функция strrchr()
В C++ strrchr() - это предопределенная функция, используемая для обработки строк. Эта функция возвращает указатель на всю строку после последнего появления заданного символа. Символ, последнее вхождение которого мы хотим найти, передается в качестве второго аргумента функции, а строка, в которой мы должны найти этот символ, передается в качестве первого аргумента функции.
В примере кода на картинке мы используем функцию для того, чтобы найти порядковый номер символа в заданной строке.
#cpp
Подписывайтесь на канал 👉@cod_academy
В C++ strrchr() - это предопределенная функция, используемая для обработки строк. Эта функция возвращает указатель на всю строку после последнего появления заданного символа. Символ, последнее вхождение которого мы хотим найти, передается в качестве второго аргумента функции, а строка, в которой мы должны найти этот символ, передается в качестве первого аргумента функции.
В примере кода на картинке мы используем функцию для того, чтобы найти порядковый номер символа в заданной строке.
#cpp
Подписывайтесь на канал 👉@cod_academy
Логические any и all
Одна из многих причин, почему Python является таким популярным языком, заключается в том, что он читаем и выразителен. Предлагаю взглянуть на прикрепленный ниже код.
Функция any возвращает значение True, если хотя бы одно из переданных утверждений верно, all – в случае, если все верны.
На мой взгляд, эти две функции заслуживают отдельного внимания всего лишь из-за их простоты в использовании.
#python
Подписывайтесь на канал 👉@cod_academy
Одна из многих причин, почему Python является таким популярным языком, заключается в том, что он читаем и выразителен. Предлагаю взглянуть на прикрепленный ниже код.
Функция any возвращает значение True, если хотя бы одно из переданных утверждений верно, all – в случае, если все верны.
На мой взгляд, эти две функции заслуживают отдельного внимания всего лишь из-за их простоты в использовании.
#python
Подписывайтесь на канал 👉@cod_academy
Отправка email
Отправить электронную почту на Java очень просто. Вам просто нужно установить Java Mail и указать путь к нему в пути к классам проекта.
#java
Подписывайтесь на канал 👉@cod_academy
Отправить электронную почту на Java очень просто. Вам просто нужно установить Java Mail и указать путь к нему в пути к классам проекта.
#java
Подписывайтесь на канал 👉@cod_academy
👍6
Упорядочиваем 3 числа
С помощью функции swap переставляем 3 числа в порядке возрастания.
#cpp
Подписывайтесь на канал 👉@cod_academy
С помощью функции swap переставляем 3 числа в порядке возрастания.
#cpp
Подписывайтесь на канал 👉@cod_academy
👍4
Официальное упорядочивание словарей
Кстати, Python 3.7 на официальном уровне зафиксировал соответствие порядка перебора элементов словарей порядку их добавления.
Но для некоторых это не такая уж и новость, так как и в Python 3.6 словари уже были упорядочены, что видно на примере выше.
Однако это был просто побочный результат реализации, не зафиксированный в стандарте. Новый Python оформил его официально. Теперь можно быть уверенным в сохранении порядка вставки.
#python
Подписывайтесь на канал 👉@cod_academy
Кстати, Python 3.7 на официальном уровне зафиксировал соответствие порядка перебора элементов словарей порядку их добавления.
Но для некоторых это не такая уж и новость, так как и в Python 3.6 словари уже были упорядочены, что видно на примере выше.
Однако это был просто побочный результат реализации, не зафиксированный в стандарте. Новый Python оформил его официально. Теперь можно быть уверенным в сохранении порядка вставки.
#python
Подписывайтесь на канал 👉@cod_academy
👍3
Меняем местами две переменные в одной строке
Многие знают, что в Python можно красиво поменять значения переменных в одну строку: a, b = b, a
Можно ли что-то похожее сделать в Java? Да. На картинке показан пример, но в реальных проектах так делать не стоит.
#java
Подписывайтесь на канал 👉@cod_academy
Многие знают, что в Python можно красиво поменять значения переменных в одну строку: a, b = b, a
Можно ли что-то похожее сделать в Java? Да. На картинке показан пример, но в реальных проектах так делать не стоит.
#java
Подписывайтесь на канал 👉@cod_academy
👍2🤔1
Блок else в циклах for
Хауди хо, друзья. Практически все новички теряются при виде блока else после циклов, поэтому сейчас немного проясним ситуацию.
В Python блок else может быть представлен не только в условных конструкциях после if, но и в циклах после for и while. В данном случае код внутри else выполняется, только если цикл не был прерван с помощью break.
Типичный пример использования – поиск чего-либо в цикле с использованием ключевого слова break при нахождении, как показано на картинке. Исходный код текстом можете найти в нашем чате.
#python
Подписывайтесь на канал 👉@cod_academy
Хауди хо, друзья. Практически все новички теряются при виде блока else после циклов, поэтому сейчас немного проясним ситуацию.
В Python блок else может быть представлен не только в условных конструкциях после if, но и в циклах после for и while. В данном случае код внутри else выполняется, только если цикл не был прерван с помощью break.
Типичный пример использования – поиск чего-либо в цикле с использованием ключевого слова break при нахождении, как показано на картинке. Исходный код текстом можете найти в нашем чате.
#python
Подписывайтесь на канал 👉@cod_academy
👍2
Трюки с логарифмом
Функцию log тоже можно использовать для ряда изящных решений.
#cpp
Подписывайтесь на канал 👉@cod_academy
Функцию log тоже можно использовать для ряда изящных решений.
#cpp
Подписывайтесь на канал 👉@cod_academy
👍1
Ссылки в C++
Когда переменная объявляется как ссылка, она становится альтернативным именем для существующей переменной. Переменную можно объявить как ссылку, поместив в её объявление "&".
#cpp
Подписывайтесь на канал 👉@cod_academy
Когда переменная объявляется как ссылка, она становится альтернативным именем для существующей переменной. Переменную можно объявить как ссылку, поместив в её объявление "&".
#cpp
Подписывайтесь на канал 👉@cod_academy
👍2