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

Я занимаюсь программированием на Python несколько лет, последние 6 месяцев профессионально, и вот некоторые вещи, которые я хотел бы знать, когда только начинал:

  1. Манипуляции со строками
  2. Понимание списка
  3. лямбда и карта ()
  4. if, elif и else условие однострочников
  5. zip ()

# 1: манипуляции со строками

Python отлично определяет, что вы хотите делать со строкой, используя математические операторы, такие как + и *:

>>> my_string = "Hi Medium..!"
>>> print(my_string * 2)
Hi Medium..!Hi Medium..!
>>> print(my_string + " I love Python" * 2)
Hi Medium..! I love Python I love Python

Мы также можем легко перевернуть строку, используя [::-1], и это не ограничивается строками !:

>>> print(my_string[::-1])
!..muideM iH
>>> my_list = [1,2,3,4,5]
>>> print(my_list[::-1])
[5, 4, 3, 2, 1]

А как насчет списка слов? Можем сделать Йоду-переводчика !:

>>> word_list = ["awesome", "is", "this"]
>>> print(' '.join(word_list[::-1]) + '!')
this is awesome!

Выше мы использовали метод .join(), соединяя все элементы в перевернутом списке с помощью ' ' (пробел) и добавляя восклицательный знак.

# 2: составьте список понятий

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

Допустим, у нас есть случайная функция возведения числа в квадрат и добавления 5:

>>> def stupid_func(x):
>>>     return x**2 + 5

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

>>> my_list = [1, 2, 3, 4, 5]
>>> new_list = []
>>> for x in my_list:
>>>     if x % 2 != 0:
>>>         new_list.append(stupid_func(x))
>>> print(new_list)
[6, 14, 30]

Но есть способ попроще !:

>>> my_list = [1, 2, 3, 4, 5]
>>> print([stupid_func(x) for x in my_list if x % 2 != 0])
[6, 14, 30]

Составление списков работает с синтаксисом [ expression for item in list ], и если вам нравится дополнительное логическое условие, такое как «нечетное» условие выше: [ expression for item in list if conditional ] это то же самое, что:

>>> for item in list:
>>>     if conditional:
>>>         expression

Очень круто! Тем не менее, мы все еще можем сделать немного лучше, потому что нам действительно не нужно это «stupid_func»:

>>> print([x ** 2 + 5 for x in my_list if x % 2 != 0])
[6, 14, 30]

Бум!

# 3: лямбда и карта

Лямбда

Лямбда - это немного странно, но, как и все остальное в этом списке, оно действительно мощное и интуитивно понятное, если вы усвоите его.

По сути, лямбда-функция - это небольшая анонимная функция. Почему анонимный? Просто потому, что лямбды чаще всего используются для выполнения небольших / простых операций, которые не требуют формального определения функции, такого как def my_function().

Давайте возьмем приведенный выше пример возведения числа в квадрат и добавления 5. Выше мы сделали формальное определение функции с def stupid_func(x), теперь давайте воссоздадим его с помощью лямбда-функции:

>>> stupid_func = (lambda x : x ** 2 + 5)
>>> print([stupid_func(1), stupid_func(3), stupid_func(5)])
[6, 14, 30]

Так зачем использовать этот странный синтаксис? Что ж, это становится полезным, когда вы хотите выполнить какую-то простую операцию, не определяя фактическую функцию. Возьмем случай списка чисел, как нам отсортировать такой список в Python? Один из способов - использовать метод sorted():

>>> my_list = [2, 1, 0, -1, -2]
>>> print(sorted(my_list))
[-2, -1, 0, 1, 2]

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

>>> print(sorted(my_list, key = lambda x : x ** 2))
[0, -1, 1, -2, 2]

карта

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

>>> print(list(map(lambda x, y : x * y, [1, 2, 3], [4, 5, 6])))
[4, 10, 18]

Это просто и элегантно по сравнению с этим чудовищем:

>>> x, y = [1, 2, 3], [4, 5, 6]
>>> z = []
>>> for i in range(len(x)):
>>>     z.append(x[i] * y[i])
>>> print(z)
[4, 10, 18]

# 4: if, elif и else обуславливают однострочники

Где-то в вашем коде вы, вероятно, найдете что-то вроде:

>>> x = int(input())
>>> if x >= 10:
>>>     print("Horse")
>>> elif 1 < x < 10:
>>>     print("Duck")
>>> else:
>>>     print("Baguette")

Когда вы запустите это, вам будет предложено ввести данные от функции input(), допустим, мы введем 5, мы получим Duck. Но мы также можем написать все это в однострочном виде, например:

print("Horse" if x >= 10 else "Duck" if 1 < x < 10 else "Baguette")

Это действительно так просто! Просматривая свой старый код, вы найдете множество мест, где простой условный оператор if / else можно упростить до однострочного.

Говоря об однострочниках, хотите получить обзор всего вашего набора данных с помощью одной строчки кода? Проверь это:



# 5: zip ()

Помните пример из раздела «map()» о параллельном применении чего-либо между двумя списками? zip() делает это еще проще.

Допустим, у нас есть два списка, один из которых содержит имена, а другой - фамилии. Как мы можем объединить их упорядоченным образом? Использование zip() !:

>>> first_names = ["Peter", "Christian", "Klaus"]
>>> last_names = ["Jensen", "Smith", "Nistrup"]
>>> print([' '.join(x) for x in zip(first_names, last_names)])
['Peter Jensen', 'Christian Smith', 'Klaus Nistrup']

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

>>> print([' '.join(x) for x in zip(first_names, last_names[::-1])])
['Peter Nistrup', 'Christian Smith', 'Klaus Jensen']

Больше похоже на это

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



Заключительные мысли

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

Спасибо за прочтение. Надеюсь, вы нашли это полезным!

Если вы хотите увидеть и узнать больше, не забудьте подписаться на меня на Medium 🔍 и Twitter 🐦