Сделайте свой код более кратким и быстрым, используя эти невероятно простые приемы

Вступление

Как мы все, вероятно, знаем, программирование может быть довольно сложным. С этим усложнением также усложняется синтаксис. Хотя иногда бывает легко избежать циклов, наложенных на условные выражения, бывают ситуации, когда наложение циклов на условные выражения может быть единственным решением проблемы, которую вы пытаетесь решить. Имея это в виду, независимо от размера или объема вашего кода, есть несколько простых приемов, которые вы можете использовать, чтобы сделать свои операции более краткими, более легкими для чтения, а иногда и более быстрыми!

Важное примечание:

Я не хочу подчеркивать идею написания «чистого» кода на этапе разработки. О многих из этих советов важно сказать, что, хотя они удобны и кратки, обратный способ часто не является неправильным. Другими словами, несоблюдение этих рекомендаций не сделает вас худшим программистом, но сделает ваш код более уродливым. При этом, во время отладки может быть трудно написать краткий и идеальный код для каждого теста или оператора печати, который вы делаете, поэтому мой совет - не делайте этого! Отличный способ использовать чистый и отформатированный код - сделать его чистым и отформатированным после того, как код будет готов и заработает.

№1: нет

Одна замечательная особенность языка программирования Python, которую, как мне кажется, часто упускают из виду, заключается в том, насколько интуитивно понятным может быть его англоязычный синтаксис. Прекрасный пример того, как это можно выразить, - это использование слова not. Это так же просто, как написать отрицательное значение на английском, чтобы полностью исключить логическое значение. Это, конечно, также может относиться к условным операторам, например:

if number not in list:

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

def toggle_switch(self):
    if self.toggled == false:
        self.toggled = true
    else:
        self.toggled = false

Этот код, безусловно, будет правильно переключать переключатель, но, честно говоря, это пустая трата строк. Вместо того, чтобы делать условный оператор в первую очередь, мы могли бы просто отрицать логическое значение, используя not.

def toggle_switch(self):
    self.toggled = not self.toggled

№2: Добавить / вычесть утверждение

Одна вещь, которую мне действительно не нравится видеть в коде, это следующее:

newvar = newvar - 5

Это, безусловно, правильно. Он вычтет 5 из нашей переменной и установит наш псевдоним равным разнице. Однако мы могли бы сделать его более аккуратным, особенно если он окружен большим количеством кода, просто используя оператор - =.

newvar -= 5

Я предпочитаю это второму, потому что намного проще посмотреть на один операнд и понять, что происходит, чем смотреть на комбинацию двух и различать, какой будет результат. Конечно, это личное предпочтение, но я думаю, что трудно спорить, выглядит это лучше или нет.

№3: Переворачивание списка

Вам когда-нибудь нужно было изменить свою жизнь? У вас что-то не получается с вашими списками, и вы бы предпочли, чтобы все было наоборот? К счастью для вас, тип списка Python имеет функцию по умолчанию reverse (), которая позволяет вам делать именно это.

arr = [5,10,15]
revarr = arr.reverse()
print(revarr)
[15,10,5]

№4: Транспонирующие матрицы

Проблема, с которой вы можете столкнуться при работе с линейной алгеброй и большими матрицами, - это транспонирование указанных матриц. Конечно, вы всегда можете подойти к этому, просто используя Numpy для своей матрицы, но в качестве альтернативы вы также можете попробовать использовать метод zip ()!

x = [[37,22],
[48 ,29],
[18 ,12]]
print (zip(*x))
[(37, 48, 18), (22, 29, 12)]

№5: Переменные в серии

Как правило, в коде Pythonic вы можете назвать несколько переменных для выполнения арифметических операций следующим образом:

a = 5
b = 8
c = 9

Конечно, как и многие другие, это, безусловно, правильно! Как и следовало ожидать, это присвоит a 5, b 8 и c 9. Однако мы могли бы сжать это трехстрочное утверждение в одну строку следующим образом:

a, b, c = 5, 8, 9

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

№6: (Бонус) Счетчик

Часто в Data Science существует высокая вероятность того, что кто-то может столкнуться с ситуацией, когда им может потребоваться подсчет, взятый из списка. Это может быть для проверки представления определенных атрибутов в образце или просто для просмотра всех параметров в данной функции. Лучший способ получить счетчики внутри списка - использовать счетчик из модуля коллекций, например:

from collections import Counter
lst = [4, 3, 3, 2, 4, 3]
print(Counter(lst))
Counter({3: 3, 4: 2, 2: 1})

Это вернет словарь, содержащий как ключи, так и их соответствующие количества для каждого уникального наблюдения внутри вашего списка.

Заключение

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