Красивый Питон — часть 2. Cписки в Python.

Эта статья для тех, кто хочет писать чистый, красивый и легко читаемый код, от которого текут слюни при чтении. Если вы из таких людей — значит, мыслите правильно. Ведь если вы работаете в команде, или разрабатываете открытое ПО — необходимо, чтобы код могли прочитать другие разработчики — возможно, тысяча других людей. Как использовать списки в Python?

спики в pythonДа что уж там — однажды и самому придется вернуться к проекту, который был заброшен несколько месяцев назад. А ведь порой бывает так, что с трудом разбираешь код, который относительно недавно написал собственными пальцами.

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

Сегодня — второй пост из серии статей об идиомах в Python, в котором рассмотрим работу со списками.

Как работать со списками в Python?

Списки — достаточно широко используемая структура данных, для которой можно найти массу применений. Это один из типов последовательности в Питоне — а значит, к ним можно применять встроенные в язык методы. Их можно передавать в качестве аргумента функциям.

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

Создание списка в Python

Временами требуется инициализировать список из X значений. Как это сделать правильно?

#Вот так список создавать не надо
new_list = []
for x in range(10):
  new_list[x] = None
  
#А вот так надо. Одна строка вместо трех.
new_list = [None] * 10

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

Генераторы списков в Python

На самом деле, генераторы списков (list comprehensions) — это достаточно обширная тема. А еще это универсальный инструмент, который достаточно часто помогает. Почитайте документацию.

#Пример генерации списка
list_1 = range(1, 101)
list_comp = [val for val in list_1 if val % 2 == 0]

Пример выше создает из переменной list_1, содержащей все целые числа от 1 до 100, список, содержащий только четные числа (те, которые делятся 2). Этот прием можно использовать как: [f(x) for x in список (условия)] , где f(x) — некоторая функция от x, а условия — необязательный блок с условными операторами. Так же допускается вложенность.

Список в строку Python

Соединение списка в строку — задача, которая возникает достаточно часто. В Python это сделать предельно просто, однако не всегда интуитивно понятно как.

#Вот так хочется сделать, но не надо
strings = ["H", "e", "l", "l", "o"]
string = ''
for char in strings:
  string = string + char
  
#А вот так надо, и это проще первого варианта
strings = ["H", "e", "l", "l", "o"]
string = ''.join(strings)

Как видно из примера, классный способ превратить список в строку — вызвать функцию join(), передав в качестве аргумента список, который нужно соединить.

 

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

Спасибо Jamal Moir за замечательные советы.