Архив метки: Python

Как выучить Python (шаг за шагом) к 2021 году

Python — важный язык программирования, который необходимо знать — он широко используется в таких областях, как наука о данных, веб-разработка, разработка программного обеспечения, разработка игр, автоматизация. Но как лучше всего изучить Python? Это может быть сложно и болезненно понять.

Когда мы изучали Python, нас больше всего расстраивало то, насколько  универсальными были все учебные ресурсы. Мы хотели узнать, как создавать веб-сайты с использованием Python, но казалось, что каждый учебный ресурс хотел, чтобы мы потратили два долгих, скучных месяца на синтаксис Python, прежде чем мы смогли даже подумать о том, что нас интересует.

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

from django.http import HttpResponse

def index(request):

    return HttpResponse("Здравствуй, мир. Вы находитесь в индексе опросов.")

 

Приведенный выше код взят из руководства по Django, популярной среде разработки веб-сайтов на Python. Опытные программисты часто бросают вам фрагменты, подобные приведенным выше. «Это просто!» — обещают они.

Но даже несколько, казалось бы, простых строк кода могут сбивать с толку. Например, почему некоторые строки имеют отступ? Что django.http? Почему некоторые вещи указаны в скобках? Понять, как все сочетается, когда вы мало знаете Python, может быть очень сложно.

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

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

Это то, что приводит к угасанию вашей мотивации и к тому, что вы просто отказываетесь от всего этого. Нам нравится думать об этом как об «скучном обрыве». Вы должны быть в состоянии взобраться на «скалу скуки», чтобы попасть в «страну интересных вещей, над которыми вы работаете» (лучшее название еще не принято).

Изучение синтаксиса Python не должно быть таким.

После того, как мы несколько раз столкнулись с «обрывом скуки» и ушли, мы нашли способ, который нам больше подошел. На самом деле, мы думаем, что это лучший способ изучить Python.

Что сработало, так это сочетание изучения основ и создания интересных вещей. Мы потратили как можно меньше времени на изучение основ, а затем сразу же погрузился в создание вещей, которые нас интересовали. В этой записи блога мы шаг за шагом расскажем, как воспроизвести этот процесс, независимо от того, почему вы хотите изучать Python.

 

Шаг 1. Определите, что мотивирует вас изучать Python

Прежде чем вы начнете изучать Python онлайн, стоит спросить себя, почему вы хотите его изучать. Это потому, что это будет долгий и иногда болезненный путь. Без достаточной мотивации вы, вероятно, не справитесь. Например, мы проспали уроки программирования в средней школе и колледже, когда нам нужно было запоминать синтаксис, а у нас не было мотивации. С другой стороны, когда нам нужно было использовать Python для создания веб-сайта для автоматической оценки эссе, мы не спали ночами, чтобы закончить его.

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

Выберите интересующую вас область, например:

  • Наука о данных/машинное обучение
  • Мобильные приложения
  • Сайты
  • Игры
  • Обработка и анализ данных
  • Оборудование/датчики/роботы
  • Скрипты для автоматизации вашей работы

 

Определите одну или две области, которые вас интересуют, и вы готовы придерживаться их. Вы будете направлять свое обучение на них и в конечном итоге будете строить в них проекты.

 

Шаг 2. Изучите базовый синтаксис

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

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

Также небольшое примечание: изучайте Python 3, а не Python 2. К сожалению, многие ресурсы по «изучению Python» в Интернете по-прежнему преподают Python 2, но вам определенно следует изучить Python 3. Python 2 больше не поддерживается, поэтому ошибки и дыры в безопасности исправлены не будут!

 

Шаг 3. Создавайте структурированные проекты

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

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

Давайте посмотрим на несколько хороших ресурсов для структурированных проектов в каждой области:

 

Наука о данных/машинное обучение

  • Dataquest  — интерактивное обучение Python и науке о данных. Вы анализируете ряд интересных наборов данных, начиная от документов ЦРУ и заканчивая статистикой игроков в хоккее. В конечном итоге вы создаете сложные алгоритмы, включая нейронные сети и деревья решений.
  • Python для анализа данных — написано автором крупной библиотеки анализа данных Python, это хорошее введение в анализ данных в Python.
  • Документация Scikit-learn — Scikit-learn — основная библиотека машинного обучения Python. Здесь есть отличная документация и руководства.
  • CS109  — это Гарвардский класс, в котором преподается Python для науки о данных. У них есть в Интернете некоторые из их  проектов и другие материалы.

 

Мобильные приложения

  • Руководство по Kivy  — Kivy — это инструмент, позволяющий создавать мобильные приложения на Python. У них есть руководство о том, как начать изучение.

 

Игры

  • Codecademy  — проведет вас через создание пары простых игр.
  • Учебники Pygame  — Pygame — популярная библиотека Python для создания игр, и это список руководств для нее.
  • Создание игр с Pygame  — книга, которая научит вас создавать игры на Python.
  • Изобретайте свои собственные компьютерные игры с помощью Python  — книги, в которой рассказывается, как создать несколько игр с помощью Python.

 

Скрипты для автоматизации вашей работы

  • Автоматизируйте скучные вещи с помощью Python  — узнайте, как автоматизировать повседневные задачи с помощью Python.

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

 

Продолжение: Как выучить Python (шаг за шагом) к 2021 году. Часть 2



2020-10-05T13:40:18
Python

Сортировка списка Python

Сортировка данных — одна из самых распространенных задач при работе с Python. Например, вы можете отсортировать список членов команды по именам или список проектов в порядке приоритета.

В этой статье описывается, как сортировать списки в Python .

Python sort() и sorted()

В Python, вы можете сортировать список с помощью встроенного в list.sort() метод или встроенный в sorted() функцию.

Функция sorted() создает новый отсортированный список, а метод list.sort() сортирует список на месте. Если вы хотите сохранить, несортированный список используйте функцию sorted() . Еще одно отличие состоит в том, что функция sorted sorted() работает с любым итерируемым объектом.

Синтаксис sort() и sorted() следующий:

list.sort(key=function, reverse=Boolean)

sorted(iterable, key=function, reverse=Boolean)

Необязательные ключевые аргументы key и reverse имеют следующее значение:

  • key — функция, которая принимает один аргумент и преобразует его перед сравнением. Функция должна возвращать одно значение, которое используется для сравнения сортировки.
  • reverse — значение reverse может быть True или False . Значение по умолчанию — True . Если для этого аргумента установлено значение false, список сортируется в обратном порядке.

Элементы списка сравниваются с помощью оператора «меньше чем» ( < ) и сортируются в порядке возрастания. Оператор < не поддерживает сравнение строки с целым числом, поэтому, если у вас есть список, содержащий строки и целые числа, операция сортировки завершится ошибкой.

В следующем примере показано, как отсортировать список строк в алфавитном порядке:

directions = ["north", "east", "south", "west"] 

directions.sort()

print('Sorted list:', directions)

Sorted list: ['east', 'north', 'south', 'west']

Если вы хотите сохранить исходный список без изменений, используйте функцию sorted() :

directions = ["north", "east", "south", "west"] 

sorted_directions = sorted(directions)

print('Sorted list:', sorted_directions)

Sorted list: ['east', 'north', 'south', 'west']

Чтобы отсортировать список в обратном (по убыванию) порядке, установите reverse аргумент в True :

directions = ["north", "east", "south", "west"] 

directions.sort(reverse=True)

print('Sorted list:', directions)

Sorted list: ['west', 'south', 'north', 'east']

Сортировка с функцией

Аргумент key принимает функцию и позволяет выполнять более сложные операции сортировки.

Самый простой пример — отсортировать элементы по их длине:

directions = ["Arya", "Daenerys", "Jon", "Brienne"] 

directions.sort(key=len)

print('Sorted list:', directions)

Мы используем функцию len() чтобы вернуть количество символов в строке, которая используется в качестве компаратора:

Sorted list: ['Jon', 'Arya', 'Brienne', 'Daenerys']

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


def sum_digits(num): 
    digits = [int(x) for x in str(num)] 
    return sum(digits) 

numbers = [23, 77, 19, 310, 219] 

numbers.sort(reverse=True, key=sum_digits)

print('Sorted list:', numbers)

Sorted list: [77, 219, 19, 23, 310]

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

numbers = [(3, 14), (1, 61), (2, 71)]

numbers.sort(key=lambda k: k[0])

print('Sorted list:', numbers)

Мы используем анонимную (лямбда) функцию, которая возвращает первый элемент кортежа. Список отсортирован по значению, возвращаемому функцией:

Sorted list: [(1, 61), (2, 71), (3, 14)]

Тот же подход можно использовать для сортировки списка словарей:

elements = [
    {'name': 'Germanium', 'number': 25, 'symbol': 'ge'},
    {'name': 'Silver', 'number': 47, 'symbol': 'ag'},
    {'name': 'Iron', 'number': 26, 'symbol': 'fe'},
]

elements.sort(key=lambda k: k['name'])

print('Sorted list:', elements)

Лямбда-функция возвращает значение ключа name , которое используется для сравнения:

Sorted list: [
    {'name': 'Germanium', 'number': 25, 'symbol': 'ge'}, 
    {'name': 'Iron', 'number': 26, 'symbol': 'fe'}, 
    {'name': 'Silver', 'number': 47, 'symbol': 'ag'}
]

Лучший и более быстрый способ сортировки сложной функции — использовать функции модуля Оператор . Вот пример:

from operator import itemgetter

elements = [
    {'name': 'Germanium', 'number': 25, 'symbol': 'ge'},
    {'name': 'Silver', 'number': 47, 'symbol': 'ag'},
    {'name': 'Iron', 'number': 26, 'symbol': 'fe'},
]

elements.sort(key=itemgetter('symbol'))

print('Sorted list:', elements)

Функция itemgetter извлекает значение symbol ключа:

Sorted list: [
    {'name': 'Silver', 'number': 47, 'symbol': 'ag'},
    {'name': 'Iron', 'number': 26, 'symbol': 'fe'},
    {'name': 'Germanium', 'number': 25, 'symbol': 'ge'}
]

Выводы

Мы показали вам, как сортировать списки в Python с помощью метода sort() и функции sorted() .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-10-03T19:12:02
Python

Как найти длину списка в Python

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

В этой статье показано, как определить длину списка.

 

Функция len()

Python имеет встроенную функцию len(), которая возвращает длину заданного объекта. Объектом может быть список, кортеж, строка, словарь и т. д.

Синтаксис функции len() следующий:

len(list)


 

Функция принимает только один аргумент. Возвращаемое значение — целое число, которое представляет собой количество элементов в списке.

Вот пример:

cities = ['Krasnodar', 'Moscow', 'Ekaterinburg', 'Rostov']



list_len = len(cities)



print("The list has {0} elements.".format(list_len))


 

The list has 4 elements.


 

Использование цикла

Другой способ узнать длину списка — использовать цикл for. Это работает путем установки счетчика и перебора всех элементов списка. На каждой итерации текущее значение counterпеременной увеличивается на единицу.

Ниже приведен пример кода, который показывает, как с помощью цикла for найти количество элементов в заданном списке :

cities = ['Krasnodar', 'Moscow', 'Ekaterinburg', 'Rostov']

counter = 0



for capital in cities:

  counter = counter + 1



print("The list has {0} elements.".format(counter))


 

The list has 4 elements.


 

Этот метод не очень питонический. Вы всегда должны предпочесть использовать функцию len().

 

Вывод

Чтобы узнать длину списка в списке Python, используйте функцию len().

Если у вас есть вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-09-29T09:29:17
Python

Обратный список в Python

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

В Python есть несколько разных способов перевернуть список, в зависимости от того, что вы пытаетесь сделать.

 

Метод reverse()

reverse() — это метод типа данных списка, который меняет местами элементы списка. Этот метод изменяет исходный список, а не создает новый.

Синтаксис метода reverse() следующий:

list.reverse()


 

reverse() не принимает аргументы.

 

Вот пример:

capitals = ['Краснодар', 'Москва', 'Ростов', 'Минск']



capitals.reverse()



print('Обратный список:', capitals)


Обратный список: ['Минск', 'Ростов', 'Москва', 'Краснодар']


 

Функция reversed()

reversed() — это встроенная функция Python, которая возвращает обратный итератор заданного итеративного объекта. Исходный список не изменяется.

Если вы хотите перебирать элементы списка только в обратном порядке, предпочтительнее использовать функцию reversed(), так как она быстрее, чем перестановка элементов на месте`.

Синтаксис функции reversed() следующий:

reversed(seq) 


 

Где seq находится список, который нужно вернуть?

Ниже приведен пример использования цикла reversed() по элементам списка в обратном порядке:

numbers = [1, 2, 3, 4]



for i in reversed(numbers) :

    print(i)


 

4

3

2

1


 

Если вы хотите преобразовать обратный итератор в список, используйте конструктор list():

numbers = [1, 2, 3, 4]



print(list(reversed(numbers)))


 

[4, 3, 2, 1]


 

Перевернуть список с помощью нарезки

Нотация среза — это встроенная функция Python, которая позволяет извлекать части последовательного типа данных. Хотя это и не очень Pythonic, вы можете использовать нотацию [::-1], перевернув список:

numbers = [1, 2, 3, 4]



print(numbers[::-1])


 

Результатом нарезки списка является новый список, содержащий извлеченные элементы. Исходный список не изменяется.

[4, 3, 2, 1]


 

Вывод

Чтобы перевернуть список Python на месте, используйте метод reverse(). Если вам нужно создать только обратный итератор, используйте функцию reversed().

Если у вас есть вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-08-26T11:05:59
Python

Функция map() в Python

map() это встроенная функция в Python, которая применяет функцию ко всем элементам в теле цикла. Это позволяет писать простой и чистый код без использования циклов.

 

Функция map() в Python

Функция map() принимает следующий вид:

map(function, iterable, ...)


 

Она принимает два обязательных аргумента:

  • function — Функция, которая вызывается для каждого элемента iterable.
  • iterable — Один или несколько объектов, поддерживающих итерацию. Большинство встроенных в Python объектов, таких как списки, словари и кортежи, являются итеративными.

В Python 3 map() возвращает объект карты с размером, равным переданному итерируемому объекту. В python 2 функция возвращает список.

Давайте рассмотрим пример, чтобы лучше объяснить, как работает функция map(). Допустим, у нас есть список строк, и мы хотели бы преобразовать каждый элемент в списке в верхний регистр.

Один из способов сделать это — использовать традиционный цикл for:

directions = ["north", "east", "south", "west"]

directions_upper = []



for direction in directions:

    d = direction.upper()

    directions_upper.append(d)



print(directions_upper)


 

['NORTH', 'EAST', 'SOUTH', 'WEST']


 

С функцией map() код будет намного проще и более гибким.

def to_upper_case(s):

    return s.upper()



directions = ["north", "east", "south", "west"]



directions_upper = map(to_upper_case, directions)



print(list(directions_upper))


 

Мы используем функцию list() для преобразования возвращенного объекта карты в список :

['NORTH', 'EAST', 'SOUTH', 'WEST']


 

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

directions = ["north", "east", "south", "west"]



directions_upper = map(lambda s: s.upper(), directions)



print(list(directions_upper))


 

Лямбда-функция — это небольшая анонимная функция.

Вот еще один пример, показывающий, как создать список квадратных чисел от 1 до 10:

squares = map(lambda n: n*n , range(1, 11))

print(list(squares))


 

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]


 

Функция range() генерирует последовательность целых чисел.

 

Использование map() с несколькими итерациями

Вы можете передать в функцию столько итераций, сколько захотите map(). Количество обязательных входных аргументов, которые принимает функция обратного вызова, должно быть таким же, как количество итерируемых элементов.

В следующем примере показано, как выполнить поэлементное умножение для двух списков:

def multiply(x, y):

  return x * y



a = [1, 4, 6]

b = [2, 3, 5]



result = map(multiply, a, b)



print(list(result))


[2, 12, 30]


 

Тот же код, но с использованием лямбда-функции будет выглядеть так:

a = [1, 4, 6]

b = [2, 3, 5]



result = map(lambda x, y: x*y, a, b)



print(list(result))


 

Когда предоставляется несколько итераций, размер возвращаемого объекта равен самой короткой итерации.

Давайте посмотрим на пример, когда итерации не имеют одинаковую длину:

a = [1, 4, 6]

b = [2, 3, 5, 7, 8]



result = map(lambda x, y: x*y, a, b)



print(list(result))


 

Избыточные элементы (7 и 8) игнорируются:

[2, 12, 30]


 

Вывод

Функция Python map() принимает итеративный объект вместе с функцией и применяет эту функцию к каждому итерируемого элементу.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-07-13T12:40:10
Python

Как комментировать в Python

При написании кода на Python всегда полезно делать код легко читаемым. Организация кода, присвоение переменным и функциям описательных имен — это несколько способов сделать это.

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

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

Комментарии должны быть краткими и точными. Не объясняйте что-то очевидное для читателя.

В этой статье рассматриваются основы написания комментариев на Python.

 

Написание комментариев в Python

Python игнорирует все, что написано в строке после хеш-метки (#).

Комментарии могут быть добавлены в начале строки или встроены в другой код:

# Это комментарий Python.

print("Привет Мир") # Это встроенный комментарий Python.


Пробел после хеш-метки не обязателен, но он улучшит читабельность комментария.

Символ хеша внутри строкового литерала не указывает на начало строки комментария. Это просто хэш-символ:

paragraph = "# Хэш внутри кавычек-это не комментарий."



Комментарии должны быть на том же уровне отступа, что и код под ними:



```py

def factorial(n):

  if n == 0:

    return 1

  else:

    # Используйте функцию факториала

    return n * factorial(n-1)


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

Комментарии также полезны при отладке скрипта. Вместо удаления некоторых строк или блоков, вы можете закомментировать их:

# for fruit in fruits:

#   print(fruit)


Многострочные комментарии в Python (блоки комментариев)

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

Самый простой способ написать многострочные комментарии в Python — добавить однострочные комментарии один за другим:

# Это первая строка.

# Это вторая строка.


Другой вариант — использовать строки документации.

Строки документации — это многострочные строковые литералы, которые используются для документирования того, что делает модуль, функция, класс или метод.

Строка документа начинается и заканчивается тройными двойными кавычками ( «»») и может занимать одну или несколько строк:

"""Это 

многострочная строка 

документа.

"""


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

 

Python

Если вы читаете скрипты Python, вы можете заметить, что в некоторых из них первая строка начинается с символов #! и пути к интерпретатору Python:

#!/usr/bin/env python3


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

Поскольку строка shebang начинается с символа хеша, она рассматривается как комментарий и автоматически игнорируется интерпретатором Python.

 

Вывод

Написание комментариев является хорошей практикой и помогает другим разработчикам, в том числе будущим, понять, что делает код. В Python все после хеш-метки ( #) и до конца строки считается комментарием.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-07-01T13:13:07
Python