Python. Пять уловок, которые нужно знать, уже сегодня

МЕНЮ


Искусственный интеллект. Новости
Поиск
Регистрация на сайте
Сбор средств на аренду сервера для ai-news

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематика

Авторизация



RSS


RSS новости

Новостная лента форума ailab.ru


Будь вы старшим инженером AI или студентом первого курса биологии — рано или поздно вы столкнётесь с языком программирования Python. После релиза, в 1991 году, Python быстро стал любимым языком программистов и технологов. Согласно рейтингу Stack Overflow, основанному на проявлении интереса к языкам, в развитых странах, Python быстро набирает популярность.

Python — высокоуровневый, интерпретируемый язык с относительно простым синтаксисом, идеально подойдет даже тем, кто ранее не программировал. Популярные библиотеки Python, хорошо интегрированы и используются в различных областях, например в биоинформатике (biopython), науке о данных (pandas), машинном обучении (keras/tensorflow) и даже в астрономии (astropy). После изучения C и Java, в качестве моих первых языков программирования, на освоение Python мне понадобилось несколько недель, достаточно было погуглить. Код выполняется гораздо медленнее, чем в Java и других языках, тем не менее Python на самом деле повышает продуктивность, благодаря хорошо налаженной интеграции процессов.

Уловка №1: Сила «однострочников» (One-Liners)

Вы устали пробираться между строк кода и теряться в условных конструкциях? Тогда, однострочники Python — это то, что вам нужно. Например, такая конструкция:

>>> if alpha > 7: >>>    beta = 999 >>> elif alpha == 7: >>>    beta = 99 >>> else: >>>    beta = 0

может быть упрощена:

>>> beta = 999 if alpha > 7 else (99 if alpha == 7 else 0)

До смешного просто! Если уделять больше внимания коду, который вы пишите, всегда найдется место, где можно упростить его однострочником. Кроме условных конструкций, упрощать можно и циклы for. Например, удвоение списка целочисленных, в четырех строках:

lst = [1, 3, 5] doubled = []  for num in lst:     doubled.append(num*2)

можно упростить до одной строки:

doubled = [num * 2 for num in lst]

Конечно, если всюду использовать однострочники, это будет выглядеть неопрятно. Старайтесь не переусердствовать с сокращениями в своём коде, кто-то даже скажет, что широкое применение такого подхода — не канон.

>>> import pprint; pprint.pprint(zip(('Byte', 'KByte', 'MByte', 'GByte', 'TByte'), (1 << 10*i for i in xrange(5))))

Уловка №2: Быстрые действия со строками

Манипуляции со строками порой вызывают сложности, но в Python есть сокращения, которые облегчат вашу жизнь. Чтобы сделать реверс строки, просто добавьте ::-1 в качестве списка индексов.

>>> a =  "ilovepython"  >>> print a[::-1]  nohtypevoli

Такую уловку можно применить и к списку с числами. Манипулировать строками в Python, чрезвычайно просто. Например, вам нужно вывести предложение, используя предопределённые переменные: str1, str2 и lst3

>>> str1 = "Totally" >>> str2 = "Awesome" >>> lst3 = ["Omg", "You", "Are"]

Просто используйте метод .join() и арифметические операторы, чтобы создать нужное предложение.

>>> print ' '.join(lst3) Omg You Are >>> print ' '.join(lst3)+' '+str1+' '+str2 Omg You Are Totally Awesome

Кроме действий со строками, рекомендую изучить больше о regex(регулярных выражениях), чтобы эффективно использовать шаблоны фильтров и поиск в стоках.

Уловка №3 Комбинации вложенных списков

Пожалуй, одна из моих любимых библиотек в Python — это itertools.Чтобы преобразить код, содержащий десятки списков, в глубоко вложенный список, достаточно нескольких манипуляций. itertools именно то, что вам нужно, чтобы решить эту задачу.

>>> import itertools >>> flatten = lambda x: list(itertools.chain.from_iterable(x)) >>> s = [['"', 'An', 'investment'], ['in'], ['knowledge'], ['pays'], ['the', 'best'], ['interest."', '--'], ['Benjamin'], ['Franklin']] >>> print(' '.join(flatten(s))) " An investment in knowledge pays the best interest." -- Benjamin Franklin

Из приведенного выше примера видно, как мы можем объединить вложенные списки и строки с помощью .join() и itertools. Метод .combinations()из библиотеки itertools, мощный инструмент, для возврата длины последовательностей элементов, из входных итераций. Нажмите здесь, чтобы узнать больше об itertools.

Уловка №4 Простые структуры данных

Возвращаясь к пункту №1. Однострочником, также очень просто вызвать инициализацию структур данных в Python. Гарольд Купер, реализовал однострочную древовидную структуру, используя следующий код:

>>> def tree(): return defaultdict(tree)

Приведенный выше код просто определяет древо, которое является словарём, со значением по умолчанию tree. Другие однострочные функции, как например генератор простых чисел:

>>> reduce( (lambda r,x: r-set(range(x**2,N,x)) if (x in r) else r),          range(2,N), set(range(2,N)))

можно найти на Github и Stack Overflow. Также в Python есть мощная библиотека Collections, которая поможет решить множество насущных проблем, без написания длинного кода.

>>> from collections import Counter >>> myList = [1,1,2,3,4,5,3,2,3,4,2,1,2,3] >>> print(Counter(myList)) Counter({2: 4, 3: 4, 1: 3, 4: 2, 5: 1})

Уловка №5 Упрощенный вывод данных

Хотел бы я узнать раньше об этом трюке. Он позволяет вывести строчный массив одной строкой, с разделением запятыми. Нам не нужно использовать .join() и циклы.

>>> row = ["1", "bob", "developer", "python"] >>> print(','.join(str(x) for x in row)) 1,bob,developer,python

Можно использовать однострочник:

>>> print(*row, sep=',') 1,bob,developer,python

Еще один элегантный способ вывода, использовать enumerate . Эта встроенная в Python функция невероятно полезна. Так, вместо четырёх строк кода:

iterable = ['a','b','c'] c = 0  for item in iterable:      print c, item      c+= 1
0 a 1 b 2 c

тоже самое, можно записать двумя:

for c, item in enumerate(iterable): print c, item

В Python, есть еще сотни тысяч подобных уловок, например pprint для форматирования кода.


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

Комментарии: