Сделайте свой код Python кратким с помощью этих однострочников

Когда мы начинаем изучать Python, мы обычно пишем код, который выполняет свою работу, не обращая внимания на удобочитаемость нашего кода и на то, насколько он лаконичен и эффективен.
Это хорошо, но есть способы сделать наш код на Python короче, не пренебрегая читабельностью. Вот что такое однострочники (если вы используете их правильно).
Вот 9 острот, которые должен знать каждый, кто изучает Python.
Если вам не хочется читать, вы можете вместо этого посмотреть мое видео на YouTube.
1. Оператор If — Else
Оператор if-else — один из первых операторов, которые мы изучаем в Python. Он используется для выполнения истинной и ложной частей заданного условия.
Мы используем этот оператор довольно часто, но знаете ли вы, что его можно упростить одной строкой кода? В этом случае операторы if и else будут находиться в одной строке.
age = 18 valid = "You're an adult" invalid = "You're NOT an adult" print(valid) if age >= 18 else print(invalid)
2. Создайте список на основе существующих списков
Списки — распространенный способ хранения данных, но знаете ли вы, что можно создать новый список на основе существующих списков всего одной строкой кода?
Это правда! Это называется пониманием списка и предлагает короткий синтаксис для создания списка на основе значений существующего списка. Понимание списков более компактно, чем функции и циклы для создания списков.
Вот синтаксис, мы будем использовать.
[expression for item in list]
И вот пример:
words = ['united states', 'brazil', 'united kingdom'] capitalized = [word.title() for word in words] >>> capitalized ['United States', 'Brazil', 'United Kingdom']
Выглядит лучше, не так ли? Помните, что мы должны сделать код удобным для пользователя, поэтому не пишите очень длинные списки в одной строке.
3. Понимание словаря
Подобно пониманию списка, в Python также есть понимание словаря. Идея та же. Понимание словаря предлагает короткий синтаксис для создания словаря в одной строке кода.
Вот синтаксис, который мы будем использовать:
{key: value for key, value in iterable}
И вот пример:
dict_numbers = {x:x*x for x in range(1,6) }
>>> dict_numbers
{1: 1, 2: 4, 3: 9, 4: 16, 5:25}
4. Присоединяйтесь к словарям
Есть разные способы присоединения к словарям. Вы можете использовать метод update(), оператор merge() и даже понимание словаря.
Тем не менее, есть более простой способ объединения словарей в Python. Это делается с помощью оператора распаковки **. Нам нужно только добавить ** перед каждым словарем, который мы хотим объединить, и использовать дополнительный словарь для хранения вывода.
dict_1 = {'a': 1, 'b': 2}
dict_2 = {'c': 3, 'd': 4}
merged_dict = {**dict_1, **dict_2}
>>> merged_dict
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
После того, как мы применим оператор ** к словарям, оба расширят свое содержимое и объединятся, чтобы создать новый словарь.
5. Удалить дубликаты в списке
Иногда нам нужно убедиться, что в нашем списке нет повторяющихся значений. Хотя не существует метода, который мог бы легко позаботиться об этом, вы можете использовать наборы, чтобы избавиться от дубликатов.
Набор — это неупорядоченный набор элементов, каждый элемент которого уникален. Это означает, что если мы превратим наш список в набор, мы сможем удалить дубликаты. Затем нам нужно только снова преобразовать набор в список.
Давайте посмотрим на базовый пример, чтобы понять это.
numbers = [1,1,1,2,2,3,4,5,6,7,7,8,9,9,9] >>> list(set(numbers)) [1, 2, 3, 4, 5, 6, 7, 8, 9]
6. Назначение нескольких переменных в одной строке в Python
Всякий раз, когда вам нужно назначить несколько переменных, вместо того, чтобы назначать их построчно, вы можете назначать их в одной строке в Python (даже переменные из разных типов).
a, b, c = 1, "abc", True >>> a 1 >>> b 'abc' >>> c True
Компактнее, не так ли? Но будь осторожен! Чем больше переменных вы присваиваете, тем больше шансов присвоить им неправильное значение.
7. Фильтровать значения из списка
Скажем, мы хотим отфильтровать некоторые значения из списка. Для этого можно использовать множество подходов, но самый простой способ сделать это — использовать функцию filter().
Вот синтаксис функции filter:
filter(function, iterable)
Если вы добавите функцию lambda внутрь функции filter, все станет еще лучше!
Давайте разберемся, отфильтровав четные числа из списка.
my_list = [10, 11, 12, 13, 14, 15] >>> list(filter(lambda x: x%2 == 0, my_list )) [10, 12, 14]
8. Сортировать словарь по ключам
Сортировка словарей не так проста, как сортировка списков — мы не можем использовать ни sort() , ни sorted() для сортировки словарей, как мы делаем это со списками.
Хорошая новость заключается в том, что мы можем комбинировать понимание словаря с функцией sorted() для сортировки словарей по ключам.
Давайте посмотрим. В приведенном ниже примере мы отсортируем словари по названию продуктов.
product_prices = {'Z': 9.99, 'Y': 9.99, 'X': 9.99}
>>{key:product_prices[key] for key in sorted(product_prices.keys())}
{'X': 9.99, 'Y': 9.99, 'Z': 9.99}
9. Сортировка словаря по значениям
Аналогично сортировке словарей по ключам, нам нужно использовать функцию sorted() и списковое понимание для сортировки словарей по значениям. Но в дополнение к этому нам также нужно добавить функцию lambda.
Во-первых, давайте посмотрим все параметры, которые имеет функция sorted().
sorted(iterable, key=None, reverse=False)
Чтобы отсортировать словарь по значениям, нам нужно использовать параметр key. Этот параметр принимает функцию, которая служит ключом для сравнения сортировки. Здесь мы можем использовать функцию lambda, чтобы все упростить.
Допустим, у нас есть словарь со значениями населения, и мы хотим отсортировать его по значениям.
population = {'USA':329.5, 'Brazil': 212.6, 'UK': 67.2}
>>> sorted(population.items(), key=lambda x:x[1])
[('UK', 67.2), ('Brazil', 212.6), ('USA', 329.5)]
Теперь осталось только добавить понимание словаря.
population = {'USA':329.5, 'Brazil': 212.6, 'UK': 67.2}
>>> {k:v for k, v in sorted(population.items(), key=lambda x:x[1])}
{'UK': 67.2, 'Brazil': 212.6, 'USA': 329.5}
Изучаете науку о данных с помощью Python? Получите мою БЕСПЛАТНУЮ памятку по Python для Data Science, присоединившись к моему списку адресов электронной почты, насчитывающему более 10 000 человек.
Если вам нравится читать такие истории и вы хотите поддержать меня как писателя, подумайте о том, чтобы зарегистрироваться и стать участником Medium. Это 5 долларов в месяц, что дает вам неограниченный доступ к тысячам руководств по Python и статьям по науке о данных. Если вы зарегистрируетесь по моей ссылке, я получу небольшую комиссию без каких-либо дополнительных затрат для вас.