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 секунд кода на Питоне

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
Senior Java Developer
от 350000 RUB до 400000 RUB
Senior AI/ML & Backend Engineer
Алма-Ата, по итогам собеседования

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