Полезные фрагменты или 30 секунд кода на Python

0
11589

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

Списки

1) Chunk

Разбиение массива на меньшие списки указанного размера. Для создания списка желаемого размера используется range, а заполняется список при помощи map.

Пример:

2) Compact

Удаление ложных значений (False, None, 0, и «») из списка при помощи filter().

Пример:

3) Count_by

Этот кусок кода на Python группирует элементы списка и возвращает количество элементов в каждой группе.

Используется map() для сопоставления значений списка со значениями функции. За каждую итерацию счетчик увеличивается.

Пример:

4) Сount_occurences

Считает количество повторений заданного значения.

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

Пример:

5) deep_flatten

Выравнивание списка при помощи рекурсии. Используется list.extend() вместе с пустым массивом (result) и функция spread для сглаживания каждого элемента списка.

Пример:

6) difference

Возвращает разницу между двумя массивами. Создает set из b и сохраняет только те значения, которые не содержатся в b.

Пример:

7) difference_by

Возвращает разницу между двумя списками, после применения функции к обоим спискам. Создает set, применяя fn к каждому элементу в b, затем использует сочетание fn и a, чтобы сохранить только значения, не содержащиеся в ранее созданном set.

Пример:

8) insertion_sort

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

Пример:

9) shuffle

Рандомизирует порядок значений списка, возвращая новый список. Использует алгоритм Фишера-Йейтса для изменения порядка элементов списка.

Пример:

10) spread

Заимствует [].concat(…arr) из Javascript. Сглаживает список (не глубоко) и возвращает новый список.

Пример:

11) zip

Создает список элементов, группируя их на основании позиции в оригинальном списке. Используется max вместе с list comprehension для получения длины самого длинного списка в аргументах. В качестве длины lists используется значение fill_value. По умолчанию значение fill_value равно None.

Пример:

Математика

Продолжаем список фрагментов кода на Python реализацией некоторых математических функций.

1) average

Возвращает среднее от двух и более чисел. Происходит деление на len(args) суммы всех элементов args. Второй аргумент 0.0 используется для операций с плавающей точкой в python2.

Пример:

2) factorial

Вычисляется факториал числа.

Используется рекурсия. Если num меньше или равно 1, возвращается 1, а иначе – произведение num и factorial из num — 1. Сработает исключение, если num будет отрицательным или числом с плавающей точкой.

Пример:

3) gcd

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

В helperGcdfunction используется рекурсия. Базовый случай, когда y равно 0. В этом случае возвращается x. В противном случае возвращается y и остаток от деления x/y. Используется reduce из встроенного модуля functools.

Пример:

4) lcm

Возвращает наименьшее общее кратное из двух или более чисел. Используется формула greatest common divisor (GCD) и lcm(x,y) = x * y / gcd(x,y) для определения наименьшего общего кратного. Формула GCD использует рекурсию, а также reduce из встроенного модуля functools.

Пример:

5) max_n

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

Используется list.sort() в сочетании с функцией deepcopy из встроенного модуля copy, чтобы создать клон списка и отсортировать его в порядке возрастания, а затем list.reverse(), чтобы отсортировать по убыванию. Для получения указанного количества элементов используется [:n]. Второй аргумент n опускается, чтобы получить одноэлементный массив.

Пример:

6) min_n

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

Используется list.sort() в сочетании с функцией deepcopy из встроенного модуля copy, чтобы создать клон списка и отсортировать его в порядке возрастания, а затем list.reverse(), чтобы отсортировать по убыванию. Для получения указанного количества элементов используется [:n]. Второй аргумент n опускается, чтобы получить одноэлементный массив.

Пример:

Строки

Последние фрагменты кода на Python на тему работы со строками.

1) byte_size

Возвращает длину строки в байтах. Заданная строка кодируется utf-8, а потом находится ее длина.

Пример:

2) capitalize

Делает первую букву строки заглавной.

Делает первую букву строки заглавной, а затем добавляет ее к остальной части строки. Параметр lower_rest опускается, чтобы сохранить остальную часть строки нетронутой, или для нее устанавливается значение true, чтобы преобразовать в нижний регистр.

Пример:

3) capitalize_every_word

Делает первую букву заглавной каждого слова строки. Используется str.title.

Пример:

4) count_vowels

Возвращает number гласных в string. При помощи регулярного выражения, вычисляется количество гласных (A, E, I, O, U) в строке.

Пример:

5) decapitalize

Делает первую букву строки строчной, а затем добавляет ее к остальной части строки. Параметр upper_rest опускается, чтобы сохранить остальную часть строки нетронутой, или для нее устанавливается значение true, чтобы преобразовать в верхний регистр.

Пример:

6) is_lower_case

Преобразует строку в верхний регистр при помощи метода str.lower() и сравнивает ее с оригиналом.

Пример:

7) is_upper_case

Преобразует строку в нижний регистр при помощи метода str.upper() и сравнивает ее с оригиналом.

Пример:

8) palindrome

Возвращает True если строка является палиндромом, иначе False.

Преобразует строку str.lower() и использует re.sub  для удаления не алфавитно-цифровых символов. Потом сравнивает новую строку с реверсивной строкой.

Пример:

Оригинал

Другие материалы по теме: