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

Комментарии

ВАКАНСИИ

Добавить вакансию
Разработчик C++
Москва, по итогам собеседования

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