Как использовать списки в Python (и когда их не использовать)

Возможно, вы слышали о понимании списка Python. Может быть, это даже то, что вы использовали, не понимая. Сейчас самое время учиться, поскольку мы рассмотрим все, что вам нужно знать о понимании списков в Python.

Прежде чем начать, стоит освежиться в том, как работают массивы и списки в Python.

и как использовать словари Python

,

Что такое понимание списков Python?

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

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

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

Как использовать списочные выражения в Python

Замечания: Все эти примеры используют Python 3.6. Если вы не уверены в различиях между Python 3 и Python 2, обязательно прочтите наш FAQ по Python

, где мы рассмотрим этот вопрос и многое другое.

Рассмотрим этот фрагмент кода, который копирует массив и превращает каждую букву в этом массиве в верхний регистр. Это делается путем циклического прохождения каждого элемента в массиве:

letters = ['a', 'b', 'c', 'd']
print(letters)
upper_letters = []
for letter in letters:
result = letter.upper()
upper_letters.append(result)
print(upper_letters)

Изучите понимание списка Python

Теперь вот та же самая точная логика, за исключением того, что делается в одной строке кода с использованием базового понимания списка Python:

letters = ['a', 'b', 'c', 'd']
print(letters)
upper_letters = [x.upper() for x in letters]
print(upper_letters)

Изучите понимание списка Python

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

Давайте разберем этот простой пример.

В этом примере создается список с именем буквы. Здесь хранятся строчные буквы «a», «b», «c» и «d». Предположим, вы хотите, чтобы все эти элементы списка были заглавными? Ну, без понимания списка, вы должны создать новый список для хранения результата (называется upper_letters), переберите все элементы в буквы список, конвертировать каждую букву (и сохранить его в результат— целесообразно, но это хорошая практика), а затем добавьте заглавную букву в новый список. Как много работы!

Понимание списка здесь почти точно эквивалентно альтернативе цикла. Он фактически говорит: «Для каждой буквы в списке букв преобразуйте их в верхний регистр и верните результат в виде нового списка».

Понимание списка может работать только над списками и должно возвращать новый список. Давайте копать глубже.

Есть три части для понимания списка (мы рассмотрим третью часть ниже). Понимание списка должно начинаться и заканчиваться квадратными скобками ([ а также ]). Вот как это было разработано, и позволяет Python знать, что вы будете работать со списком.

Внутри квадратных скобок нужно начинать с результата. Это то, что вы хотите сделать с каждым элементом списка.

В приведенном выше примере следующий код преобразует каждый элемент (на который ссылается имя переменной Икс) в верхний регистр с помощью Верхняя () Метод, который является частью базовой библиотеки Python:

[x.upper() # will not run, only half the comprehension at this point

Затем вам нужно указать Python, над каким списком работать, и назначить каждому отдельному элементу переменную. Это именно так аналогично циклу for в длинном примере:

for x in letters

Каждый раз, когда цикл проходит по списку, значение Икс изменится на текущий элемент. Это начнется как «а», а затем «б», и так далее.

Если вы сложите все вместе (и назначите переменную с именем upper_letters), все будет сделано:

upper_letters = [x.upper() for x in letters]

Сейчас, upper_letters будет содержать список заглавных букв, начиная с «A», затем «B» и так далее.

Третья часть понимания списка в Python

Как мы упоминали выше, есть третья часть для понимания списка.

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

Вот как это выглядит:

ages = [1, 34, 5, 7, 3, 57, 356]
print(ages)
old_ages = [x for x in ages if x > 10]
print(old_ages)

Изучите понимание списка Python

В этом примере используется новый список с именем возраст. old_ages список составлен с использованием понимания списка. если условие в конце означает, что в новый список вставляются только те элементы списка, которые соответствуют критериям. В этом примере разрешены любые возрасты больше десяти.

Когда не нужно использовать списки Python

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

old_ages = [x for x in ages if x > 10 and x < 100 and x is not None]

Этот код работает, но он становится длинным и запутанным. Точно так же ничего, кроме простого вызова функции, может не работать. В этом примере вы получите ошибку:

letters = ['a', 'b', 'c', 'd', 2]
print(letters)
upper_letters = [x.upper() for x in letters]
print(upper_letters)

Изучите понимание списка Python

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

letters = ['a', 'b', 'c', 'd', 1]
print(letters)
upper_letters = []
for letter in letters:
try:
result = letter.upper()
upper_letters.append(result)
except AttributeError:
pass # do nothing
print(upper_letters)

Изучите понимание списка Python

Начните использовать списки Python для использования

Теперь, когда вы знаете, насколько просто понимать списки в Python, нет никаких причин не использовать его. Просто помните, чтобы сделать это простым, и читаемость превыше всего.

Может быть, вы будете управлять Arduino с Python

или как насчет сетевой камеры безопасности Python DIY

?

Ссылка на основную публикацию
Adblock
detector