Крутые коды в питоне

Содержание
  1. 25 полезных однострочников Python, которые вы должны знать
  2. 1. Сменка двух переменных
  3. 2. Множественные присвоения переменных
  4. 3. Сумма четных чисел в списке
  5. 4. Удаление нескольких элементов из списка
  6. 5. Чтение файлов
  7. 6. Запись данных в файл
  8. 7. Создание списков
  9. 8. Mapping списков, или изменение типа данных в списке
  10. 9. Создание набора
  11. 10. Fizz Buzz
  12. 11. Палиндром
  13. 12. Целые числа, разделенные пробелами, в списке
  14. 13. Лямбда-функция
  15. 14. Проверить наличие числа в списке
  16. 15. Вывод паттернов
  17. 16. Нахождение факториала
  18. 17. Ряд Фибоначчи
  19. 18. Простое число
  20. 19. Нахождение максимального числа
  21. 20. Линейная алгебра
  22. 21. Транспонировать матрицу
  23. 22. Подсчет нахождений паттерна
  24. 23. Замена текста другим текстом
  25. 24. Симуляция подбрасывания монеты
  26. 25. Генерация групп
  27. Занимательные фигуры на Python в одну строку
  28. Квадрат
  29. Прямоугольный треугольник
  30. Перевёрнутый прямоугольный треугольник
  31. Пирамида
  32. Повёрнутый тупоугольный треугольник
  33. Ромб
  34. Песочные часы
  35. Ель
  36. Сердце

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

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

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

1. Сменка двух переменных

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

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

Читайте также:  Get started with python django

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

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

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

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. Mapping списков, или изменение типа данных в списке

Иногда в нашем проекте нам нужно изменить типы данных всех элементов в списке. Первый способ, который приходит вам в голову, — использовать цикл, а затем получить доступ ко всем элементам из списка, а затем один за другим изменить тип данных элементов. Этот метод предназначен для старой школы в 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. Создание набора

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

# Квадрат всех четных чисел в диапазоне >

10. Fizz Buzz

Это тест, в котором нам нужно написать программу, что печатает числа от 1 до 100. Но для чисел, кратных трем, выведет «Fizz» вместо числа, а для кратных пяти выведет «Buzz». (если кратно и трем, и пяти, то выводится, соответственно, FizzBuzz).

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

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

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

11. Палиндром

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

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

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

lis = list(map(int, input().split())) print(lis) > 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. Нахождение факториала

Факториал — это произведение целого числа и всех целых чисел в порядке перед ним.

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)]

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

Источник

Занимательные фигуры на Python в одну строку

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

Существует поверье — если созерцать непонятный однострочник, рано или поздно наступит «просветление».

Квадрат

print("\n".join("* " * 4 for i in range(4)))
print(*["* " * 4 for i in range(4)], sep='\n')

Прямоугольный треугольник

print("\n".join("* " * i for i in range(7)))
print(*["* " * i for i in range(7)], sep='\n')

Перевёрнутый прямоугольный треугольник

print("\n".join("* " * i for i in range(7, 0, -1)))
print(*["* " * i for i in range(7, 0, -1)], sep='\n')

Пирамида

print("\n".join(('* ' * i + '*').rjust(7 * 2 + i) for i in range(7)))
print(*[" " * (8-i) + " *" * i for i in range(1, 8)], sep='\n')

Повёрнутый тупоугольный треугольник

from itertools import chain print("\n".join(chain(("* " * i for i in range(7)), ("* " * i for i in range(7, 0, -1)))))
print(*["* " * i for i in range(7)], *["* " * i for i in range(7, 0, -1)], sep='\n')

Ромб

from itertools import chain print("\n".join(chain((('* ' * i + '*').rjust(7 * 2 + i) for i in range(6)), (('* ' * i + '*').rjust(7 * 2 + i) for i in range(6, -1, -1)))))
print("\n".join(*[(*(('* ' * i + '*').rjust(7 * 2 + i) for i in range(6)), *(('* ' * i + '*').rjust(7 * 2 + i) for i in range(6, -1, -1)))]))
print(*[('* ' * i + '*').rjust(7 * 2 + i) for i in range(6)], *[('* ' * i + '*').rjust(7 * 2 + i) for i in range(6, -1, -1)], sep='\n')

Песочные часы

from itertools import chain print("\n".join(chain((('* ' * i + '*').rjust(7 * 2 + i) for i in range(6, 0, -1)), (('* ' * i + '*').rjust(7 * 2 + i) for i in range(7)))))
print(*[('* ' * i + '*').rjust(7 * 2 + i) for i in range(6, 0, -1)], *[('* ' * i + '*').rjust(7 * 2 + i) for i in range(7)], sep='\n')

Ель

from itertools import chain print("\n".join(chain((('* ' * i + '*').rjust(7 * 2 + i) for i in range(5)), (('* ' * i + '*').rjust(7 * 2 + i) for i in range(1, 7)), (('* ' * i + '*').rjust(7 * 2 + i) for i in range(1, 9)))))
print(*[('* ' * i + '*').rjust(7 * 2 + i) for i in range(5)], *[('* ' * i + '*').rjust(7 * 2 + i) for i in range(1, 7)], *[('* ' * i + '*').rjust(7 * 2 + i) for i in range(1, 9)], sep='\n')

Сердце

print('\n'.join(' '.join(*zip(*row)) for row in ([["*" if row==0 and col%3!=0 or row==1 and col%3==0 or row-col==2 or row+col==8 else " " for col in range(7)] for row in range(6)])))

Источник

Оцените статью