Share This
Связаться со мной
Крути в низ
Categories
//Однострочники Python для ускорения написания кода

Однострочники Python для ускорения написания кода

18.07.2022Category : Python

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

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

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

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

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

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

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

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

odnostrochniki python dlja uskorenija napisanija koda 54b4cbc - Однострочники Python для ускорения написания кода

Английский для программистов

Наш телеграм канал с тестами по английскому языку для программистов. Английский это часть карьеры программиста. Поэтому полезно заняться им уже сейчас

Подробнее ×

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

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

1. If-else

До:

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

После:

var = 21 if 3<2 else 42

2. Elif

До:

>>> x = 42 >>> if x > 42: >>>     print("no") >>> elif x == 42: >>>     print("yes") >>> else: >>>     print("maybe") yes

После:

>>> print("no") if x > 42 else print("yes") if x == 42 else print("maybe") yes

3. If без else

До:

condition = True  if condition:     print('hi')

После:

if condition: print('hello') print('hello') if condition else None

4. Функция

До:

def f(x):     return "hello "+ x

После:

f = lambda x: "hello "+ x f = exec("def f(x):n    return 'hello '+ x")

5. Цикл (list comprehension)

До:

squares = [] for i in range(10):     squares.append(i**2)

После:

squares=[i**2 for i in range(10)]

6. Цикл с условием if

До:

squares = [] for i in range(10):     if i%2==0:         squares.append(i**2)

После:

squares = [i**2 for i in range(10) if i%2==0]

7. Цикл с if else

До:

squares = [] for i in range(10):     if i%2==0:         squares.append(i**2)     else:         squares.append(False)

После:

squares = [i**2 if i%2==0 else False for i in range(10)]

8. Цикл while с if else

До:

c=0 while c < 10:     if c!=5:         print(c)     else:         print("FIVE")     c+=1

После:

while c < 10: c+=1; print(c) if c!=5 else print("FIVE")

9. Меняем местами переменные

До:

>>> def swap(x,y):     x = x ^ y     y = x ^ y     x = x ^ y     return x, y >>> swap(10,20) (20,10)

После:

>>> x, y = 10, 20 >>> x, y = y, x (20, 10)

10. Множественное присваивание

До:

a="ONE" b=2 c=3.001

После:

a, b, c = "One", 2, 3.001

11. Запись строки в файл

До:

text = "Helllloooooo" fileName = "hello.txt" f=open(fileName, "a") f.write(text) f.close()

После:

text = "Helllloooooo" fileName = "hello.txt" print(text, file=open(fileName, 'a'))

12. Быстрая сортировка

До:

# Source - https://stackabuse.com/quicksort-in-python/  def partition(array, start, end):     pivot = array[start]     low = start + 1     high = end      while True:         while low <= high and array[high] >= pivot:             high = high - 1          while low <= high and array[low] <= pivot:             low = low + 1          if low <= high:             array[low], array[high] = array[high], array[low]         else:             break      array[start], array[high] = array[high], array[start]      return high  def quick_sort(array, start, end):     if start >= end:         return      p = partition(array, start, end)     quick_sort(array, start, p-1)     quick_sort(array, p+1, end)  array = [29,99,27,41,66,28,44,78,87,19,31,76,58,88,83,97,12,21,44]  quick_sort(array, 0, len(array) - 1) print(array)

После:

array = [29,99,27,41,66,28,44,78,87,19,31,76,58,88,83,97,12,21,44] q = lambda l: q([x for x in l[1:] if x <= l[0]]) + [l[0]] + q([x for x in l if x > l[0]]) if l else [] print(q(array))

13. Последовательность Фибоначчи

До:

def fib(x):     if x <= 2:         return 1     return fib(x - 1) + fib(x - 2)

После:

fib=lambda x: x if x<=1 else fib(x-1) + fib(x-2)

14. HTTP-сервер

До:

import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd:     print("serving at port", PORT)     httpd.serve_forever()

После:

python -m http.server 8000

15. Вложенные циклы for

До:

iter1 = [1, 2, 3, 4] iter2 = ['a', 'b', 'c'] for x in iter1:     for y in iter2:         print(x, y)

После:

[print(x, y) for x in iter1 for y in iter2]

16. Вывод без перехода на новую строку

До:

for i in range(1,5):     print(i, end=" ")

После:

print(*range(1,5))

17. Класс

До:

class School():      fun = {}

После:

School = type('School', (object,), {'fun':{}})

18. Оператор walrus:= (Python 3.8)

До:

command = input("> ") while command != "quit":     print("You entered:", command)

После:

while (command := input("> ")) != "quit": print("You entered:", command)

От редакции Pythonist. Если вас заинтересовала тема однострочников, можем порекомендовать книгу «Python One-Liners» Кристиана Майера. Ее краткий обзор вы найдете в статье «Самые новые книги по Python для начинающих питонистов».

Заключение

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

Перевод статьи «18 Python one-liners that will speed up your coding process».

odnostrochniki python dlja uskorenija napisanija koda f474e54 - Однострочники Python для ускорения написания кода

Английский для программистов

Наш телеграм канал с тестами по английскому языку для программистов. Английский это часть карьеры программиста. Поэтому полезно заняться им уже сейчас

Скачать ×

  • 1 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Свежие комментарии

    Рубрики

    About Author 01.

    blank
    Roman Spiridonov

    Моя специальность - Back-end Developer, Software Engineer Python. Мне 39 лет, я работаю в области информационных технологий более 5 лет. Опыт программирования на Python более 3 лет. На Django более 2 лет.

    Categories 05.

    © Speccy 2022 / All rights reserved

    Связаться со мной
    Close