17 лучших однострочников на Python

Подборка самых эффектных и элегантных примеров на Python, умещающихся в одну строчку. Прекрасное развлечение и зарядка для ума.







Бессмертная классика

print "hello world"
Лямбда функции:
max_xy = lambda x,y: x if x > y else y

Map функции:
n = [1,2,3,4]
print((map(lambda x:x**2 + 2, n)))

Reduce функции:
n = [1,2,3,4]
print(reduce (lambda x,y: x*y, n))

Filter функции:
n = [1,2,3,4]
print (list(filter(lambda x: x > 2, n)))

Быстрая сортировка:
qsort = lambda l : l if len(l)<=1 else qsort([x for x in l[1:] if x < l[0]]) + [l[0]] + qsort([x for x in l[1:] if x >= l[0]])

Расстояние между двумя точками:
dist = lambda w,v : (sum((wi - vi)**2 for wi,vi in zip(w,v)))**.5

Значение числа Пи:
4*sum((-1.0)**(n%2) / (2*n + 1) for n in range(2010))

Генерация непрерывного массива чисел:
print map(lambda x:x+1,range(0,20))

Простые числа от 0 до 1000:
print filter(None,map(lambda y:y*reduce(lambda x,y:x*y!=0, map(lambda x,y=y:y%x,range(2,int(pow(y,0.5)+1))),1),range(2,1000)))

Первые 20 чисел Фибоначчи:
print map(lambda x,f=lambda x,f:(x<=1) or (f(x-1,f)+f(x-2,f)): f(x,f), range(20))

Все возможные сочетания:
cross_product = [(a, b) for a in ['a', 'b', 'c'] for b in [1, 2, 3]]

Отрезать конец одной строки и добавить его к другой:
def foo(string, numbers): return ', '.join(map(lambda s,n:s+str(n), [string for i in numbers], numbers))

Линейная алгебра

Умножение вектора на число:
def scale(A, x): return [ai*x for ai in A]
scale([3,4,5], 2)

Сложение векторов:
A = [1, 2, 3]
B = [5, 8, 10]
def add(A, B): return [ai+bi for (ai, bi) in zip(A, B)]
add(A,B)

Транспонирование матрицы:
a=[[1,2,3],[4,5,6],[7,8,9]]
inverted_a = [list(i) for i in zip(*a)]

Другое

Случайный элемент:
import random; random.choice(['alpha', 'beta', 'gamma', 'delta'])

Задание списка или множества операций:
M = ['a', 'b', 'c', 'c', '1', '100', 'a10']
M.append('Beta')

Другие статьи по теме

Трюки и советы по Питоне, которые облегчат вашу жизнь

Полезные фрагменты или 30 секунд кода на Питоне

Комментарии

ВАКАНСИИ

Добавить вакансию
AppSec BP
по итогам собеседования
Flutter Developer
по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ