Программирование

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

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

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

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

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

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

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

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

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

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

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

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 знать, что вы будете работать со списком.

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

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

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

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

 for x in letters 

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

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

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

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

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

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

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

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

 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 собран с использованием понимания списка. Условие if в конце означает, что в новый список вставляются только те элементы списка, которые соответствуют критериям. В этом примере разрешены любые возрасты больше десяти.

Когда не нужно использовать списки 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 управлять Arduino с помощью Python управлять Arduino с или о домашней сетевой камере Python для сетевой камеры ?

Похожие посты
Программирование

Что такое канал RSS? (И где его взять)

Программирование

7 причин, почему изображения не загружаются на ваш сайт

Программирование

Запустите агент SQL Server: настройте SQL Server 2012

Программирование

15 лучших бесплатных обоев дня Святого Патрика