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

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

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

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

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

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

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

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

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

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

  letter = ['a', 'b', 'c', 'd'] 
print (буквы)
upper_letters = []
для буквы в буквах:
result = letter.upper ()
upper_letters.append (результат)
print (upper_letters)

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

  letter = ['a', 'b', 'c', '  d '] 
print (буквы)
upper_letters = [x.upper () для x в буквах]
print (upper_letters)

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

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

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

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

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

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

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

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

  [x  .upper () # не будет работать, на данный момент только половина понимания  

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

  для x в буквах  

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

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

   upper_letters = [x.upper () для x в буквах]  

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

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

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

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

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

  age = [  1, 34, 5, 7, 3, 57, 356] 
print (age)
old_ages = [x для x в возрастах, если x> 10]
print (old_ages)

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

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

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

  old_ages = [x для x в возрастах, если x> 10 и x  

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

  letter = ['a',  'b', 'c', 'd', 2] 
print (буквы)
upper_letters = [x.upper () для x в буквах]
print (upper_letters)

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

  letter = ['a', 'b', '  c ',' d ', 1] 
print (буквы)
upper_letters = []
для буквы в буквах:
попробуйте:
результат = letter.upper ()
upper_letters.append (result)
except AttributeError:
pass # ничего не делать
print (upper_letters)

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

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

Может быть, вы будете управлять Arduino с помощью Python или как насчет самодельной сетевой камеры безопасности Python?

.

Оцените статью
oilgasindustry.ru
Добавить комментарий