Питонический способ логического упрощения сложных вещей

Python - востребованный язык программирования. Этот язык легко выучить и применить. Будет проще, если вы уже знаете какой-либо язык программирования. Глубина в Python позволяет использовать его для написания сценариев, разработки приложений пользовательского интерфейса и машинного обучения. Еще один недостаток знания других языков программирования заключается в том, что вы начинаете использовать python неосознанно, не в питонической манере. Python - это высокопроизводительный язык программирования, который позволяет заменять сложную логику одной строкой. - Итак, это заставляет изучать эти уловки и решать свои проблемы более питоническим способом.

1. Диапазон, перечисление и отображение

1.1. Создайте список от 0 до 5.

nums = list(range(0,6)) # done list is created [0,1,2,3,4,5]

1.2 Составьте список нечетных чисел

Диапазон позволяет указать начальную позицию, конечную позицию и шаги, которые нужно сделать из начальной позиции

nums_list = [*range(1,6,2)]

1.3 Enumerate: просмотреть список с помощью enumerate для получения индекса и значения

enumerate не только возвращает индекс и значение, но также позволяет добавить начальную точку индекса, то есть enumerate (colors, 10), а индекс начинается с 10

colors = ['violet', 'red', 'blue', 'green']
color_names = []
for index, color in enumerate(colors):
    print(index, color)
    color_name = (index, color)
    color_names.append(index_name)
# let us rewrite the above thing in more pythonic way
color_names = [(index, color) for index, color in enumerate(colours)] 
# reduce it down to more better code
color_names = list(enumerate(colors)) # awesome

1.4 Карта: преобразовать каждый элемент в верхний в списке

Карта позволяет применить функцию к данному списку в качестве аргумента. Есть еще один интересный факт. Давайте изучим

# it will convert the string inside whole list into upper
color_names = map(str.upper, colors)
# another way to do without map 
color_names = str(colors).upper()

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

def change_case(value):
    return_string =[]
    return ''.join(i.upper() if i.isupper() else i.lower() for i in value)
color_names = list(map(change_case, colors)) 

Даже если мы говорим о приведенном выше коде, если вы видите функцию, которая выполняет задачу в одной строке, что может быть циклом for на любом другом языке программирования.

2. Массивы Numpy

Массивы Numpy очень важны, поскольку они обеспечивают быстрое вычисление, и в большинстве случаев все необходимые вычисления массивов, необходимые для машинного обучения, могут быть легко выполнены с помощью numpy. Создать массив numpy очень просто, так как он позволяет преобразовывать список в массивы. Единственное ограничение для массивов numpy заключается в том, что они всегда однородны по своей природе. Это означает, что он всегда хранит один тип данных.

2.1 Создание массива или преобразование списка в массив

np.array(range(10))
num_array = np.array([*range(10, 20, 2)])  # array is created converting list into array

Массивы обеспечивают гибкость, позволяющую выполнять все вычисления простым и быстрым способом, например, num_array + 2, он добавит 2 к каждому элементу в массиве. И вы можете попробовать поиграть с двумя массивами, умножением и т. Д. Это будет весело, и вы увидите, как легко добиться этого в Python.

3. Магические команды

Улучшение и улучшение производительности всегда является проблемой для любого языка программирования. В Python есть команды для этого

3.1% timeit
Это позволяет узнать время, прошедшее до выполнения программы. Это хорошо, поскольку позволяет сравнить два варианта и легко определить лучшую программу по производительности.

%timeit также позволяет указать количество прогонов и количество циклов для проверки производительности вашего кода, т.е. флаги -r и -n. Вы можете использовать -r10 и -n25, чтобы указать 10 итераций с 25 циклами в каждой при вычислении среднего и стандартного отклонения времени выполнения для вашего кода.

3.2 %% timeit
% time позволяет получить тайминги для одной строки кода. Если вы хотите оценить несколько строк, то %% timeit - это вариант для сбора статистики.

Для профилирования и определения памяти / времени, затраченного на каждом шаге, обратитесь здесь.

4. Манипуляции со списком

Понимание списка очень важно для эксперта. Он выглядит хорошо для чтения, более питонический, с неплохой производительностью. Есть много встроенных функций для поддержки списка. Давайте возьмем предыдущий пример преобразования всех строк в верхний регистр в списке, это может занять много кода на любом другом языке программирования. Python может сделать это, используя одну строку кода, используя понимание списка, или вы можете применить str.upper () непосредственно к списку. Есть много таких вариантов использования, в которых такие постановки задач могут быть легко решены.

Заключение

Я попытался пройти некоторые уловки с питоном. Python пользуется спросом, и каждый хочет учиться. В основном, многие программисты начинают использовать python, как и любой другой язык программирования, что лишает смысла использование python. Так что продвинутые приемы и основы написания кода питоническим языком всегда помогают. Поверьте мне! ваш код выглядит хорошо, компактно и умно, когда вы применяете все эти уловки. Это несколько основных приемов, но определенно, как только вы начнете применять эти приемы, вы определенно узнаете все больше и больше.

Еще одна уловка для повышения производительности. Просто и полезно. Существует буквальный синтаксис для определения структуры данных, которая может повысить производительность по сравнению с другим методом. Например: рассмотрите возможность использования буквального синтаксиса (например, [] вместо list(), {} вместо dict() или () вместо tuple()). Отлично !

В целом эти уловки помогут вам исправить код и написать код более питоническим способом. % time и %% time - это всегда хороший вариант для проверки различного кода и времени, затрачиваемого на оценку производительности вашего кода. Это определенно позволит получить доказательства в поддержку вашего кода. Существуют такие параметры, как профилирование, чтобы глубже изучить вашу программу и увидеть точное время, затраченное на выполнение всей программы. Я определенно предложу варианты профилирования, но я скажу, что% time также является лучшим вариантом для первоначального поиска вашего кода. Массивы важны, поскольку они являются частью многих библиотек, например панд. Приятно иметь все это в своих занятиях. Я надеюсь, что это поможет вам еще больше заинтересовать Python. Надеюсь, я смогу обогатить ваши знания и постараюсь придумать еще такие уловки. Удачного обучения и программирования!