Именование среза с использованием функции slice
Работа с множеством значений, которые заданы индексами, может быстро обернуться беспорядком – как в плане поддержки, так и в плане читабельности кода.
Один из вариантов улучшения ситуации заключается в использовании констант для значений, задаваемых индексами. Но есть и более удачный способ написания качественного кода, как показано на картинке
#python
Подписывайтесь на канал 👉@cod_academy
Работа с множеством значений, которые заданы индексами, может быстро обернуться беспорядком – как в плане поддержки, так и в плане читабельности кода.
Один из вариантов улучшения ситуации заключается в использовании констант для значений, задаваемых индексами. Но есть и более удачный способ написания качественного кода, как показано на картинке
#python
Подписывайтесь на канал 👉@cod_academy
Количество дней между датами
Иногда может понадобиться узнать количество дней, часов, минут и т.п. между датами. Рассмотрим один из способов нахождения дней между двумя датами выше в примере.
#java
Подписывайтесь на канал 👉@cod_academy
Иногда может понадобиться узнать количество дней, часов, минут и т.п. между датами. Рассмотрим один из способов нахождения дней между двумя датами выше в примере.
#java
Подписывайтесь на канал 👉@cod_academy
Функции вместимости в строках
1. capacity() - функция возвращает ёмкость памяти, выделенную для строки, которая может быть равной или больше, чем размер самой строки. Дополнительное пространство выделяется таким образом, чтобы при добавлении новых символов в строку операции могли выполняться эффективно.
2. resize() - функция изменяет размер строки, его можно увеличивать или уменьшать.
3. length() - функция возвращает длину строки.
4. shrink_to_fit() - функция уменьшает ёмкость памяти строки, делает ее равной минимально возможной. Эта операция полезна для экономии дополнительной памяти, когда мы уверены, что больше не нужно добавлять символы.
#cpp
Подписывайтесь на канал 👉@cod_academy
1. capacity() - функция возвращает ёмкость памяти, выделенную для строки, которая может быть равной или больше, чем размер самой строки. Дополнительное пространство выделяется таким образом, чтобы при добавлении новых символов в строку операции могли выполняться эффективно.
2. resize() - функция изменяет размер строки, его можно увеличивать или уменьшать.
3. length() - функция возвращает длину строки.
4. shrink_to_fit() - функция уменьшает ёмкость памяти строки, делает ее равной минимально возможной. Эта операция полезна для экономии дополнительной памяти, когда мы уверены, что больше не нужно добавлять символы.
#cpp
Подписывайтесь на канал 👉@cod_academy
Switch-конструкция с помощью словаря
Привет, на связи Адриан. Начинающие программисты достаточно часто спрашивают меня про switch-конструкции, а в Python их вобщем-то нет.
Однако существует одно хитрое решение – использовать словарь, где значениями будут функции. В качестве примера напишем словарь, который будет использован для математических операторов.
В этом примере я использовал lambda-функции для упрощения кода, но вместо них можете подставить любые другие. Объясню немного подробнее, lambda – объявление анонимной функции, x и y - принимаемые аргументы, x + y – возвращаемый результат.
#python
Подписывайтесь на канал 👉@cod_academy
Привет, на связи Адриан. Начинающие программисты достаточно часто спрашивают меня про switch-конструкции, а в Python их вобщем-то нет.
Однако существует одно хитрое решение – использовать словарь, где значениями будут функции. В качестве примера напишем словарь, который будет использован для математических операторов.
В этом примере я использовал lambda-функции для упрощения кода, но вместо них можете подставить любые другие. Объясню немного подробнее, lambda – объявление анонимной функции, x и y - принимаемые аргументы, x + y – возвращаемый результат.
#python
Подписывайтесь на канал 👉@cod_academy
👍2
Метод valueOf()
Возвращает соответствующий числовой объект, содержащий значение переданного аргумента, простыми словами — преобразует в нужный тип данных. Аргумент можно преобразовать в int, double, float и другие типы данных, например, можно преобразовать строку в число.
#java
Подписывайтесь на канал 👉@cod_academy
Возвращает соответствующий числовой объект, содержащий значение переданного аргумента, простыми словами — преобразует в нужный тип данных. Аргумент можно преобразовать в int, double, float и другие типы данных, например, можно преобразовать строку в число.
#java
Подписывайтесь на канал 👉@cod_academy
👍1
Функция unique
unique используется для удаления дубликатов любого элемента, присутствующего последовательно в диапазоне [first, last). Он выполняет эту задачу для всех подгрупп, присутствующих в диапазоне, имеющих один и тот же элемент, присутствующий последовательно.
#cpp
Подписывайтесь на канал 👉@cod_academy
unique используется для удаления дубликатов любого элемента, присутствующего последовательно в диапазоне [first, last). Он выполняет эту задачу для всех подгрупп, присутствующих в диапазоне, имеющих один и тот же элемент, присутствующий последовательно.
#cpp
Подписывайтесь на канал 👉@cod_academy
Генерация уникальных идентификаторов
В этот пятничный вечер Адриан подготовил для вас небольшой, но крайне полезный приём, который часто применяется на практике.
Стандартный модуль uuid — быстрый и простой способ сгенерировать UUID (universally unique identifier), глобально уникальный идентификатор.
Так, мы можем создать случайное 128-битное число, которое наверняка будет уникальным. Существует более 2¹²² возможных UUID. Это более 5 ундециллионов, то есть 36 нулей.
Вероятность нахождения дубликатов в заданном наборе крайне мала. Даже при наличии триллиона UUID вероятность того, что среди них есть дубликат, гораздо меньше, чем один к миллиарду.
Вполне недурно для двух строк кода.
#python
Подписывайтесь на канал 👉@cod_academy
В этот пятничный вечер Адриан подготовил для вас небольшой, но крайне полезный приём, который часто применяется на практике.
Стандартный модуль uuid — быстрый и простой способ сгенерировать UUID (universally unique identifier), глобально уникальный идентификатор.
Так, мы можем создать случайное 128-битное число, которое наверняка будет уникальным. Существует более 2¹²² возможных UUID. Это более 5 ундециллионов, то есть 36 нулей.
Вероятность нахождения дубликатов в заданном наборе крайне мала. Даже при наличии триллиона UUID вероятность того, что среди них есть дубликат, гораздо меньше, чем один к миллиарду.
Вполне недурно для двух строк кода.
#python
Подписывайтесь на канал 👉@cod_academy
Метод split()
Возвращает массив строк, вычисленных путем разделения данной строки вокруг данного регулярного выражения.
Параметры:
regex — разграничение регулярного выражения;
limit — порог, результатом которого означает, как много строк, должно быть возвращено.
#java
Подписывайтесь на канал 👉@cod_academy
Возвращает массив строк, вычисленных путем разделения данной строки вокруг данного регулярного выражения.
Параметры:
regex — разграничение регулярного выражения;
limit — порог, результатом которого означает, как много строк, должно быть возвращено.
#java
Подписывайтесь на канал 👉@cod_academy
Итераторы в строках
1. begin() - возвращает итератор в начало строки.
2. end() - возвращает итератор в конец строки.
3. rbegin() - возвращает обратный итератор, указывающий на конец строки.
4. rend() - возвращает обратный итератор, указывающий на начало строки.
#cpp
Подписывайтесь на канал 👉@cod_academy
1. begin() - возвращает итератор в начало строки.
2. end() - возвращает итератор в конец строки.
3. rbegin() - возвращает обратный итератор, указывающий на конец строки.
4. rend() - возвращает обратный итератор, указывающий на начало строки.
#cpp
Подписывайтесь на канал 👉@cod_academy
Упаковка параметров с помощью urlencode
Новая неделя – новые знания. В это утро понедельника я подготовил для вас крайне практичный пост.
Довольно часто приходится работать с разнообразными API и совершать get-запросы с передачей множества параметров. Чаще всего составление запроса в коде выглядит примерно так:
url = 'https://example.com?item={}&size={}&color={}&amount={}'.format('t-shirt', 'M', 'white', 5)
Смотрится не слишком презентабельно, однако есть слегка более длинный, но значительно улучающий читаемость кода вариант – функция urlencode из из модуля urllib.
#python
Подписывайтесь на канал 👉@cod_academy
Новая неделя – новые знания. В это утро понедельника я подготовил для вас крайне практичный пост.
Довольно часто приходится работать с разнообразными API и совершать get-запросы с передачей множества параметров. Чаще всего составление запроса в коде выглядит примерно так:
url = 'https://example.com?item={}&size={}&color={}&amount={}'.format('t-shirt', 'M', 'white', 5)
Смотрится не слишком презентабельно, однако есть слегка более длинный, но значительно улучающий читаемость кода вариант – функция urlencode из из модуля urllib.
#python
Подписывайтесь на канал 👉@cod_academy
Метод insert()
Вставляет символы в данную строку буфера (StringBuffer). Подстрока добавляется перед указанным индексом.
#java
Подписывайтесь на канал 👉@cod_academy
Вставляет символы в данную строку буфера (StringBuffer). Подстрока добавляется перед указанным индексом.
#java
Подписывайтесь на канал 👉@cod_academy
Алгоритм shuffle
Переупорядочивает элементы в заданном диапазоне [first, last) таким образом, чтобы каждая возможная перестановка этих элементов имела равную вероятность появления.
#cpp
Подписывайтесь на канал 👉@cod_academy
Переупорядочивает элементы в заданном диапазоне [first, last) таким образом, чтобы каждая возможная перестановка этих элементов имела равную вероятность появления.
#cpp
Подписывайтесь на канал 👉@cod_academy
Кэширование функций
Кэширование может сэкономить время, когда связанная с вводом или выводом функция периодически вызывается с одинаковыми аргументами. Раньше приходилось создавать свою реализацию, но в Python 3.2+ появился декоратор lru_cache, который позволяет нам быстро кэшировать и вскрывать возвращаемые значения функции.
Давайте реализуем калькулятор чисел Фибоначчи с использованием кэша. Советую попробовать запустить любую рекурсивную функцию с кэшированием и без него, прирост в скорости замечается сразу.
#python
Подписывайтесь на канал 👉@cod_academy
Кэширование может сэкономить время, когда связанная с вводом или выводом функция периодически вызывается с одинаковыми аргументами. Раньше приходилось создавать свою реализацию, но в Python 3.2+ появился декоратор lru_cache, который позволяет нам быстро кэшировать и вскрывать возвращаемые значения функции.
Давайте реализуем калькулятор чисел Фибоначчи с использованием кэша. Советую попробовать запустить любую рекурсивную функцию с кэшированием и без него, прирост в скорости замечается сразу.
#python
Подписывайтесь на канал 👉@cod_academy
Метод subSequence()
Возвращает новую последовательность символов, которая является подпоследовательностью этой последовательности, другими словами — возвращает последовательность символов из строки, начиная и заканчивая указанными индексами.
#java
Подписывайтесь на канал 👉@cod_academy
Возвращает новую последовательность символов, которая является подпоследовательностью этой последовательности, другими словами — возвращает последовательность символов из строки, начиная и заканчивая указанными индексами.
#java
Подписывайтесь на канал 👉@cod_academy
👍1
Токенизация строки
Токенизация строки означает разделение строки относительно некоторого разделителя (разделителей). Есть много способов этого добиться.
Рассмотрим пример с функцией strtok(). Она разбивает строку по указанным разделителям и должна быть вызвана в цикле, на каждой итерации возвращая следующую часть. В конце возвращает NULL
#cpp
Подписывайтесь на канал 👉@cod_academy
Токенизация строки означает разделение строки относительно некоторого разделителя (разделителей). Есть много способов этого добиться.
Рассмотрим пример с функцией strtok(). Она разбивает строку по указанным разделителям и должна быть вызвана в цикле, на каждой итерации возвращая следующую часть. В конце возвращает NULL
#cpp
Подписывайтесь на канал 👉@cod_academy
Ускоряем код с помощью векторизации
Одним из приемов для ускорения работы циклов является векторизация вычислений, т. е. использование функций, которые поддерживают операции над векторами.
Вообще лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией 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