Рубрики
Без рубрики

20 полезных советов и хитростей на питоне, которые вы должны знать

Эта статья была первоначально опубликована по адресу: https: //www.blog.duomly.com/20-ssessential-python-tips-and-tr … Tagged с Python, начинающими, программированием, Codenewbie.

Эта статья была первоначально опубликована по адресу: https://www.blog.duomly.com/20-essential-python-tips-and-tricks-you-should-know/

Python является популярным, общим назначением и широко используемым языком программирования. Он используется для науки о данных и машинного обучения, научных вычислений во многих областях, бэк-элитной веб-разработки, мобильных и настольных приложений и так далее. Многие известные компании используют Python: Google, Dropbox, Facebook, Mozilla, IBM, Quora, Amazon, Spotify, NASA, Netflix, Reddit и многие другие.

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

Его синтаксис разработан с учетом простоты, читаемости и элегантности.

В этой статье представлены 20 советов и хитростей Python, которые могут быть полезны.

1. Дзен питона

Дзен Python, также известный как PEP 20, представляет собой небольшой текст Тима Питерса, который представляет руководящие принципы для проектирования и использования Python. Его можно найти на веб -сайте Python, но вы также можете получить его в своем терминале (консоли) или Nopyter Notebook с одним заявлением:

>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

2. Цеполо задание

Если вам нужно несколько переменных, чтобы ссылаться на один и тот же объект, вы можете использовать присвоение цепью:

>>> x = y = z = 2
>>> x, y, z
(2, 2, 2)

Логично и элегантно, верно?

3. Сравнение цепочек

Вы можете объединить множественные сравнения с одной экспрессией Python, цепляя операторов сравнения. Это выражение возвращает true, если все сравнения являются правильными или ложными в противном случае:

>>> x = 5
>>> 2 < x ≤ 8
True
>>> 6 < x ≤ 8
False

Это похоже на (2

Это также законно:

>>> 2 < x > 4
True

Вы можете цепорить более двух сравнений:

>>> x = 2
>>> y = 8
>>> 0 < x < 4 < y < 16
True

4. Несколько заданий

Вы можете назначить несколько переменных в одном операторе, используя распаковку кортежей:

>>> x, y, z = 2, 4, 8
>>> x
2
>>> y
4
>>> z
8

Пожалуйста, обратите внимание, что 2, 4, 8 в первом утверждении является кортежом, эквивалентным (2, 4, 8).

5. Более продвинутое многочисленное задание

Обычные несколько заданий – это еще не все Python. Вам не нужно такое же количество элементов с левой и правой стороны:

>>> x, *y, z = 2, 4, 8, 16
>>> x
2
>>> y
[4, 8]
>>> z
16

В этом случае X берет первое значение (2), потому что оно на первом месте. Z является последним и берет последнее значение (8). Y берет все другие значения, упакованные в список, потому что у него есть звездочка (*Y).

6. Переменные обмена

Вы можете применить несколько заданий для обмена любыми двумя переменными в кратком и элегантном образом, не вводя третью:

>>> x, y = 2, 8
>>> x
2
>>> y
8
>>> x, y = y, x
>>> x
8
>>> y 2

7. Словарь слияния

Один из способов объединения двух или более словарей – это распаковывать их в новом дикте:

>>> x = {'u': 1}
>>> y = {'v': 2}
>>> z = {**x, **y, 'w': 4}
>>> z
{'u': 1, 'v': 2, 'w': 4}

8. Присоединяйтесь к струнам

Если вам нужно присоединиться к нескольким строкам, в конечном итоге имея один и тот же символ или группу символов между ними, вы можете использовать метод str.join ():

>>> x = ['u', 'v', 'w']
>>> y = '-*-'.join(x)
>>> y
'u-*-v-*-w'

9. Предварительная итерация

Если вы хотите итерацию через последовательность, и вам нужны как элементы последовательности, так и соответствующие индексы, вы должны использовать перечисление:

>>> for i, item in enumerate(['u', 'v', 'w']):
... print('index:', i, 'element:', item)
...
index: 0 element: u
index: 1 element: v
index: 2 element: w

В каждой итерации вы получите кортеж с индексом и соответствующий элемент последовательности.

10. Обратная итерация

Если вы хотите итерацию через последовательность в обратном порядке, вы должны использовать Reversed:

>>> for item in reversed(['u', 'v', 'w']):
... print(item)
...
w
v
u

11. Совокупные элементы

Если вы собираетесь собрать элементы из нескольких последовательностей, вам следует использовать Zip:

>>> x = [1, 2, 4]
>>> y = ('u', 'v', 'w')
>>> z = zip(x, y)
>>> z

>>> list(z)
[(1, 'u'), (2, 'v'), (4, 'w')]

Вы можете перевести через полученный объект Zip или преобразовать его в список или кортеж.

12. Транспонирующие матрицы

Хотя люди обычно применяют Numpy (или аналогичные библиотеки) при работе с матрицами, вы можете получить транспонирование матрицы с помощью молнии:

>>> x = [(1, 2, 4), ('u', 'v', 'w')]
>>> y = zip(*x)
>>> z = list(y)
>>> z
[(1, 'u'), (2, 'v'), (4, 'w')]

13. Уникальные ценности

Вы можете удалить дубликаты из списка, которые получают уникальные значения, преобразуя его в набор, если порядок элементов не важен:

>>> x = [1, 2, 1, 4, 8]
>>> y = set(x)
>>> y
{8, 1, 2, 4}
>>> z = list(y)
>>> z
[8, 1, 2, 4]

14. Сортировки последовательности

Последовательности отсортируются по их первым элементам по умолчанию:

>>> x = (1, 'v')
>>> y = (4, 'u')
>>> z = (2, 'w')
>>> sorted([x, y, z])
[(1, 'v'), (2, 'w'), (4, 'u')]

Однако, если вы хотите сортировать их в соответствии со своими вторыми (или другими) элементами, вы можете использовать ключ параметра и соответствующую функцию лямбды в качестве соответствующего аргумента:

>>> sorted([x, y, z], key=lambda item: item[1])
[(4, 'u'), (1, 'v'), (2, 'w')]

Это похоже на то, что вы хотите получить обратный заказ:

>>> sorted([x, y, z], key=lambda item: item[1], reverse=True)
[(2, 'w'), (1, 'v'), (4, 'u')]

15. Сортируемые словаря

Вы можете использовать аналогичный подход для сортировки ключевых платков словарей, полученных с помощью метода .Items ():

>>> x = {'u': 4, 'w': 2, 'v': 1}
>>> sorted(x.items())
[('u', 4), ('v', 1), ('w', 2)]

Они отсортированы в соответствии с ключами. Если вы хотите, чтобы они были отсортированы в соответствии с их значениями, вам следует указать аргументы, которые соответствуют ключу и в конечном итоге обратно:

>>> sorted(x.items(), key=lambda item: item[1])
[('v', 1), ('w', 2), ('u', 4)]
>>> sorted(x.items(), key=lambda item: item[1], reverse=True)
[('u', 4), ('w', 2), ('v', 1)]

16. Сырые форматированные строки

PEP 498 и Python 3.6 представили так называемые форматированные строки или F-строки. Вы можете внедрить выражения в такие строки. Возможно и просто рассматривать струну как сырую, так и отформатированную. Вам нужно включить оба префикса: фр.

>>> fr'u \ n v w={2 + 8}'
'u \\ n v w=10'

17. Получить текущую дату и время

Python имеет встроенный модуль DateTime, который является универсальным в работе с датами и временем. Один из его методов. (), возвращает текущую дату и время:

>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2019, 5, 20, 1, 12, 31, 230217)

18. Получить индекс максимального (или минимального) элемента

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

>>> x = [2, 1, 4, 16, 8]
>>> max((item, i) for i, item in enumerate(x))[1]
3

Если есть два или более элементов с максимальным значением, этот подход возвращает индекс последнего:

>>> y = [2, 1, 4, 8, 8]
>>> max((item, i) for i, item in enumerate(y))[1]
4

Чтобы получить индекс первого происшествия, вам нужно немного изменить предыдущее утверждение:

>>> -max((item, -i) for i, item in enumerate(y))[1]
3

Альтернативный путь, вероятно, более элегантный:

>>> x = [2, 1, 4, 16, 8]
>>> max(range(len(x)), key=lambda i: x[i])
3
>>> y = [2, 1, 4, 8, 8]
>>> max(range(len(y)), key=lambda i: x[i])
3

Чтобы найти индекс минимального элемента, используйте функцию min вместо макс.

19. Получить декартовый продукт

Встроенный модуль иертолс предоставляет много потенциально полезных классов. Одним из них является продукт, используемый для получения декартового продукта:

>>> import itertools
>>> x, y, z = (2, 8), ['u', 'v', 'w'], {True, False}
>>> list(itertools.product(x, y, z))
[(2, 'u', False), (2, 'u', True), (2, 'v', False), (2, 'v', True),
(2, 'w', False), (2, 'w', True), (8, 'u', False), (8, 'u', True),
(8, 'v', False), (8, 'v', True), (8, 'w', False), (8, 'w', True)]

20. Оператор для умножения матрицы

PEP 465 и Python 3.5 представили выделенного оператора Infix для умножения матрицы @. Вы можете реализовать его для своего класса с помощью методов Матмул , rmatmul и Иматмул Анкет Вот как элегантный код для умножения векторов или матриц выглядит:

>>> import numpy as np
>>> x, y = np.array([1, 3, 5]), np.array([2, 4, 6])
>>> z = x @ y
>>> z
44

Вывод

Вы видели 20 советов и хитростей Python, которые делают его интересным и элегантным. Есть много других языковых функций, которые стоит изучить.

Счастливого кодирования!

Оригинал: “https://dev.to/duomly/20-useful-python-tips-and-tricks-you-should-know-3h8c”