Python более популярен, чем когда-либо, и люди ежедневно доказывают, что Python - очень мощный и простой в освоении язык.
Я занимаюсь программированием на Python несколько лет, последние 6 месяцев профессионально, и вот некоторые вещи, которые я хотел бы знать, когда только начинал:
- Манипуляции со строками
- Понимание списка
- лямбда и карта ()
- if, elif и else условие однострочников
- 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 🐦