Как написать программу на python в одну строку

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

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

Что такое однострочники?

Однострочник — это сжатый блок кода, вмещенный в одну строку. По-английски — one-liner. По сути это лаконичные, полезные программы, занимающие всего строку кода.

Зачем нужны однострочники?

Если вы еще не фанат однострочников, вероятно, вам интересно, зачем вообще они нужны, в чем их смысл. Вот несколько аргументов в пользу их изучения и применения:

  • Научившись писать однострочники, вы попутно куда лучше разберетесь в основах языка Python.
  • Однострочники позволяют писать код быстрее, а это может пригодиться на соревнованиях по программированию.
  • Вы научитесь писать код более «питонично». Люди, перешедшие на Python с других языков программирования, часто пишут код, не используя нативные функции этого языка. Скажем, не пользуются представлениями списков, множественным присваиванием, срезами и т. п. вещами.
  • Ловко применив однострочник, вы сможете произвести впечатление на друзей и коллег.

Но с применением однострочников связаны и определенные сложности. Подумайте о программировании как о шахматах. Вы знаете основы (что такое переменные, циклы, условия, структуры данных, классы). Однострочники можно сравнить с изучением мастерских ходов и созданием собственных стратегий.

Калькулятор на Python в одну строку

Читайте также:
Программа видеомастер инструкция по применению

Поначалу вам может быть трудно, но как только вы поднатореете в написании однострочников, вы сможете достигать своих целей быстрее.

Примеры однострочников на Python

if 3 < 2: var=21 else: var=42

Источник: pythonist.ru

8 способов свести ваши функции Python в одну строку

Да, мы можем это сделать. Оба блока кода выполняют одно и то же, но нижний расположен в одну строку. Я уверен, что вы не знали о том, что так можно делать!

2) Лямбда-функции

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

lambda inputs: return_value
def greet(): return ‘hello’ # this is the same as greet = lambda : ‘hello’
def add10(n): return n + 10 # this is the same as add10 = lambda n: n+10
def add(a, b): return a + b # this is the same as add = lambda a, b: a+b
3) Использование точек с запятой вместо новых строк
def hello(): x = 1 y = 2 print(x, y) # this function spans 4 lines
def hello():x=1;y=2;print(x,y) # now it spans 1 line

Условие в одну строку на python (питон) #short

Да, мы можем это сделать! Однако, обратите внимание, что это не сработает, если у вас больше 1 двоеточия, например: использование блоков if-else, циклов for и т.д. Поэтому используйте этот метод экономно и только в крайнем случае.

4) Понимание списка / словаря / множества — сжатие циклов

Понимание списка / словаря / множества — это метод в Python, который позволяет нам создать список / словарь / множество в 1 строке кода. Синтаксис:

# list comprehension [expression for var in iterable if condition] # dict comprehension

# given some numbers, we want to square them all lis = [1, 2, 3, 4, 5] # using a normal for loop new = [] for n in lis: new.append(n**2) # new = [1, 4, 9, 16, 25] # using list comprehension new = [n**2 for n in lis] # new = [1, 4, 9, 16, 25]

# given some numbers, we want to create a dict # where keys are numbers, and values are squares lis = [1, 2, 3, 4, 5] # using a normal for loop new = <> for n in lis: new[n] = n**2 # new = # using dict comprehension new = # new =

Читайте также:
К программа электронных таблиц относятся выберите один или несколько ответов

# given some numbers, find unique odd numbers lis = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5] # using a normal for loop new = set() for n in lis: if n%2 == 1: new.add(n) # # using set comprehension new = #

5) Блоки if—else в виде тернарного оператора

# if else var = X if condition else Y # if-elif-else var = A if else B if else C # if-elif-elif-else var = A if else B if else C if else D

Тернарный оператор позволяет нам сконденсировать блоки if-else в одну строку. Несколько примеров:

# normal if-else block if x==5: y = ‘hello’ else: y = ‘hi’ # using the ternary operator y = ‘hello’ if x==5 else ‘hi’

# normal if-elif-else block if x==5: y = ‘hello’ elif x==6: y = ‘hola’ else: y = ‘hi’ # using the ternary operator y = ‘hello’ if x==5 else ‘hola’ if x==6 else ‘hi’

# normal if-elif-elif-else block if x==5: y = ‘hello’ elif x==6: y = ‘hola’ elif x==7: y = ‘nihao’ else: y = ‘hi’ # using the ternary operator y = ‘hello’ of x==5 else ‘hola’ if x==6 else ‘nihao’ if x==7 else ‘hi’

6) Объединение методов в цепочку — несколько методов в одной строке

x = x.method1() x = x.method2() x = x.method3() # using method chaining x = x.method1().method2().method3()

8 способов свести ваши функции Python в одну строку

1) Опустить символ новой строки после ключевого слова‘def’

def hello(): print(‘hello’)
def hello():print(‘hello’)

Да, мы можем это сделать. Оба блока кода выполняют одно и то же, но нижний расположен в одну строку. Я уверен, что вы не знали о том, что так можно делать!

2) Лямбда-функции

Лямбда-функции – это небольшие анонимные функции, которые мы можем записать в одной строке, используя ключевое слово lambda . Синтаксис:

lambda inputs: return_value
def greet(): return ‘hello’ # this is the same as greet = lambda : ‘hello’
def add10(n): return n + 10 # this is the same as add10 = lambda n: n+10
def add(a, b): return a + b # this is the same as add = lambda a, b: a+b

3) Использование точек с запятой вместо новых строк

def hello(): x = 1 y = 2 print(x, y) # this function spans 4 lines
def hello():x=1;y=2;print(x,y) # now it spans 1 line

Да, мы можем это сделать! Однако, обратите внимание, что это не сработает, если у вас больше 1 двоеточия, например: использование блоков if-else, циклов for и т.д. Поэтому используйте этот метод экономно и только в крайнем случае.

Читайте также:
Как скрыть вирус в программе

4) Понимание списка / словаря / множества — сжатие циклов

Понимание списка / словаря / множества – это метод в Python, который позволяет нам создать список / словарь / множество в 1 строке кода. Синтаксис:

# list comprehension [expression for var in iterable if condition] # dict comprehension
# given some numbers, we want to square them all lis = [1, 2, 3, 4, 5] # using a normal for loop new = [] for n in lis: new.append(n**2) # new = [1, 4, 9, 16, 25] # using list comprehension new = [n**2 for n in lis] # new = [1, 4, 9, 16, 25]
# given some numbers, we want to create a dict # where keys are numbers, and values are squares lis = [1, 2, 3, 4, 5] # using a normal for loop new = <> for n in lis: new[n] = n**2 # new = # using dict comprehension new = # new =

# given some numbers, find unique odd numbers lis = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5] # using a normal for loop new = set() for n in lis: if n%2 == 1: new.add(n) # # using set comprehension new = #

5) Блоки if—else в виде тернарного оператора

# if else var = X if condition else Y # if-elif-else var = A if else B if else C # if-elif-elif-else var = A if else B if else C if else D

Тернарный оператор позволяет нам сконденсировать блоки if-else в одну строку. Несколько примеров:

# normal if-else block if x==5: y = ‘hello’ else: y = ‘hi’ # using the ternary operator y = ‘hello’ if x==5 else ‘hi’
# normal if-elif-else block if x==5: y = ‘hello’ elif x==6: y = ‘hola’ else: y = ‘hi’ # using the ternary operator y = ‘hello’ if x==5 else ‘hola’ if x==6 else ‘hi’
# normal if-elif-elif-else block if x==5: y = ‘hello’ elif x==6: y = ‘hola’ elif x==7: y = ‘nihao’ else: y = ‘hi’ # using the ternary operator y = ‘hello’ of x==5 else ‘hola’ if x==6 else ‘nihao’ if x==7 else ‘hi’

6) Объединение методов в цепочку — несколько методов в одной строке

x = x.method1() x = x.method2() x = x.method3() # using method chaining x = x.method1().method2().method3()

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru