6 простых трюков в Python

Материал из Викижурнал
6 простых трюков в Python
6 простых трюков в Python
6 простых трюков в Python
Тематические порталы

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

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

Обратное упорядочивание данных

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

a = "!dlrow olleH"
backward = a[::-1]

print(a)
print(backward)

Получаем соответствующий результат:

!dlorow olleH
Hello world!

Ту же операцию можно сделать с любым типом данных, например со списком и так далее.

Отдельные объекты переменных

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

array = [5, 10, 15, 20]
five, ten, fifteen, twenty = array

print(five)
print(ten)
print(fifteen)
print(twenty)

И получим следующий результат:

5
10
15
20

Объединение списоков

Если Вы изучаете Python, то обязательно нужно познакомиться с модулем itertools. Itertools – это модуль стандартной библиотеки, который позволяет обходить сложные итерации над списками. Этот модуль не только значительно упрощает программирование сложных циклов, но и делает код более быстрым и лаконичным. Вот только один пример использования модуля Itertools в качестве объединения списков внутри спсика, но на самом деле функций модуля значительно больше:

import itertools as it
c = [[1, 2], [3, 4], [5, 6]]
newlist = list(it.chain.from_iterable(c))

print(c)
print(newlist)

В первой строке импортируем модуль intertools. Вторая строка: переменная списков внутри списка. В третьей строке создаём новую переменную, которая при помощи функции модуля объединяет списки в переменной "c". В пятой строке выводим данные первоначальной переменной и в шестой строке выводим новый объединённый список и как результат получаем:

[[1, 2], [3, 4], [5, 6]]
[1, 2, 3, 4, 5, 6]

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

c = [[1, 2], [3, 4], [5, 6]]

def unite_lists(mylist):
    new_list = []
    for x in mylist:
        for y in x:
            new_list.append(y)
    return new_list

print(unite_lists(c))

Как видите такой код значительно длиннее и необходимо задействовать две итерации над списком.

Вывод данных из переменной

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

a, *b, c = [1, 2, 3, 4, 5]
print(a)
print(b)
print(c)

Как мы видим, задано три переменных, а данных в списке значительно больше, "a" и "c" соответствуют первому и последнему значению в списке, а "*b" присваивает все остальные значения между ними и соответственно получаем:

1
[2, 3, 4]
5

Нумерация

Если вы не знаете встроенную функцию нумерации, то возможно, вам стоит с ней познакомиться. Функция enumerate() позволяет получить индексы определенных значений в списке. Это особенно полезно в при работе с массивами. Например у нас есть список с именами и нам необходимо его пронумеровать. Это можно сделать следующим образом:

names = ['philip', 'denis', 'alexander']

for i, w in enumerate(names):
    print(i+1, w.title())

Через цикл в списке применяем функцию enumerate() и к новой переменной "1" необходимо добавить единицу, так как нумерация начинается с нуля. Получаем вот такой результат:

1 Philip
2 Denis
3 Alexander

Разделение списков

Разделить списки в Python невероятно просто. Для этого можно использовать разные инструменты, но, безусловно, важным является возможность задавать названия фрагментам списка. Это особенно полезно для линейной алгебры в Python. Для этого мы можем использовать функцию slice(), как показано ниже:

a = [0, 1, 2, 3, 4, 5]
last_three = slice(-3, None)

print(a[last_three])

Получаем соответствующий результат:

[3, 4, 5]

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

a = [0, 1, 2, 3, 4, 5]
last_tree_2 = (a[-3::])
middle_slice = a[2:4]

print(last_tree_2)
print(middle_slice)

Получаем такой результат:

[3, 4, 5] [2, 3]

Другие статьи по теме Python

Используемые источники