Добавить в корзинуПозвонить
Найти в Дзене
А КАК КОДИТЬ?

25 полезных однострочников Python, которые вы должны знать.

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

Введение

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

1. Замена Двух Переменных

a = 4 b = 5
a,b = b,a
print(a,b) >> 5,4

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

2. Множественные присвоения переменных

a,b,c = 4,5.5,'Hello'
print(a,b,c) >> 4,5.5,hello

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

a,b,*c = [1,2,3,4,5]
print(a,b,c) >> 1 2 [3,4,5]

3. Сумма четных чисел в списке

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

a = [1,2,3,4,5,6]
s = sum([num for num in a if num%2 == 0])
print(s)
>> 12

4. Удаление нескольких элементов из списка

del — это ключевое слово используется в Python для удаления значений из списка.

# Удаление всех четных
a = [1,2,3,4,5]
del a[1::2]
print(a) >> [1, 3, 5]

5. Чтение Файлов

lst = [line.strip() for line in open('data.txt')]
print(lst)

Здесь мы используем понимание списка. Сначала мы открываем текстовый файл и, используя цикл for, читаем строку за строкой. В конце концов, с помощью strip мы убираем всё лишнее пространство. Есть еще один гораздо более простой и короткий способ сделать это, используя только функцию списка.

list(open('data.txt'))
# Использование with также закроет файл после использования
with open("data.txt") as f: lst=[line.strip() for line in f]
print(lst)

6. Запись данных в файл

with open("data.txt",'a',newline='\n') as f: f.write("Python is awesome")

Приведенный выше код сначала создаст файл data.txt, если его еще нет, и запишет "Python is awesome" в файле.

7. Создание Списков

lst = [i for i in range(0,10)]
print(lst)
>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
или
lst = list(range(0,10))
print(lst)

Мы также можем создать список строк, используя тот же метод.

lst = [("Hello "+i) for i in ['Karl','Abhay','Zen']]
print(lst)
>> ['Hello Karl', 'Hello Abhay', 'Hello Zen']

8. Маппинг списков и типизация всего списка

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

list(map(int,['1','2','3']))
>> [1, 2, 3]
list(map(float,[1,2,3]))
>> [1.0, 2.0, 3.0]
[float(i) for i in [1,2,3]]
>> [1.0, 2.0, 3.0]

9. Создание множеств — Set

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

# Квадратный корень из всех четных чисел в диапазоне
{x**2 for x in range(10) if x%2==0}
>> {0, 4, 16, 36, 64}

10. Fizz Buzz

Возможно кто-то не знает о Fizz Buzz-викторине на python, придуманной Имраном Гори. В этой викторине нам нужно написать программу, которая печатает числа от 1 до 100. Но для кратных трём печатайте “Fizz” вместо числа, а для кратных пяти - “Buzz”.

Похоже, нам придется использовать циклы и несколько операторов if-else. Если вы попытаетесь сделать это на любом другом языке, вам, возможно, придется написать до 10 строк кода, но не волнуйтесь, мы используем python, мы можем реализовать FizzBuzz, используя только одну строку кода.

['Fizz' if i%3==0 else 'Buzz' if i%5==0 else 'Fizz Buzz' for i in range(1,20)]

В приведенном выше коде мы используем понимание списка для запуска цикла от 1 до 20, а затем на каждой итерации цикла проверяем, делится ли число на 3 или 5. Если да, то мы заменяем число на Fizz или Buzz соответственно, иначе мы заменяем число на FizzBuzz.

11. Палиндром

Палиндром - это число или строка, которая выглядит одинаково, когда она перевернута.

text = 'level'
ispalindrome = text == text[::-1]
ispalindrome
>> True

12. Целые числа, разделенные пробелом, в список

lst = list(map(int, input().split()))
print(lst)
>> 1 2 3 4 5 6 7 8
[1, 2, 3, 4, 5, 6, 7, 8]

13. Лямбда-Функция

Лямбда-функция — это небольшая анонимная функция. Лямбда-функция может принимать любое количество аргументов, но может иметь только одно выражение.

sqr = lambda x: x * x # Функция, возвращающая квадрат любого числа
sqr(10)
>> 100

14. Проверить наличие числа в списке

num = 5
if num in [1,2,3,4,5]:
print('present')
>> present

15. Печатные шаблоны

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

n = 5
print('\n'.join('😀' * i for i in range(1, n + 1)))
>>
😀
😀😀
😀😀😀
😀😀😀😀
😀😀😀😀😀

16. Нахождение Факториала

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

import math
n = 6
math.factorial(n)
>> 720

17. Ряд Фибоначчи

Ряд чисел, в котором каждое число (число Фибоначчи) является суммой двух предыдущих чисел. Простейший ряд Фибоначчи 1, 1, 2, 3, 5, 8, 13 и т. д. Мы можем использовать понимание списка и цикл for для создания ряда Фибоначчи в диапазоне.

fibo = [0,1]
[fibo.append(fibo[-2]+fibo[-1]) for i in range(5)]
fibo
>> [0, 1, 1, 2, 3, 5, 8]

18. Простое Число

Простое число — это число, которое делится только на себя и 1. например: 2,3,5,7 и т. д. Для генерации простых чисел в диапазоне мы можем использовать функцию списка с фильтром и лямбдой для генерации простых чисел.

list(filter(lambda x:all(x % y != 0 for y in range(2, x)), range(2, 13)))
>> [2, 3, 5, 7, 11]

19. Найти Максимальное Число

findmax = lambda x,y: x if x > y else y
findmax(5,14)
>> 14
или
max(5,14)

В приведенном выше коде с помощью лямбда-функции мы проверяем условие сравнения и в соответствии с ним возвращаем максимальное число.

20. Линейная Алгебра

Иногда нам нужно масштабировать элементы списка в 2 или 5 раз. Код ниже объясняет, как.

def scale(lst, x): return [i*x for i in lst]
scale([2,3,4], 2) # Вызов
>> [4,6,8]

21. Транспонирование матрицы

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

a=[[1,2,3],
[4,5,6],
[7,8,9]]
transpose = [list(i) for i in zip(*a)]
transpose
>> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

22. Подсчет вхождения шаблона

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

import re; len(re.findall('python','python is a programming language. python is python.'))
>> 3

23. Замена текста другим текстом

"python is a programming language.python is python".replace("python",'Java')
>> Java is a programming language. Java is Java

24. Имитация подбрасывания монетки

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

import random; random.choice(['Head',"Tail"])
>> Head

25. Формирование Групп

groups = [(a, b) for a in ['a', 'b'] for b in [1, 2, 3]]
groups
>> [('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3)]

Вывод

Я поделился всеми полезными и важными однострочниками, которые знаю. Если вы знаете что-то еще, то сообщите об этом всем в комментариях.

Перевод

Источник