Постижение списков в Python

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

Введение в понимание списков Python

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

Например, предположим, что у вас есть список из пяти чисел:

numbers = [1, 2, 3, 4, 5]
Code language: Python (python)

И вы хотите получить список квадратов на основе этого списка numbers.

Самый простой способ — использовать цикл for:

numbers = [1, 2, 3, 4, 5] squares = [] for number in numbers: squares.append(number**2) print(squares)
Code language: Python (python)

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

Обратите внимание, что квадрат числа — это произведение числа, умноженного на само себя. Например, квадрат числа 2 равен 2*2 = 4, квадрат числа 3 равен 3*3 = 9, и так далее.

Чтобы сделать код более лаконичным, можно использовать встроенную функцию map() с лямбда-выражением:

numbers = [1, 2, 3, 4, 5] squares = list(map(lambda number: number**2, numbers)) print(squares)
Code language: Python (python)

Поскольку функция map() возвращает итератор, необходимо использовать функцию list() для преобразования итератора в список.

И цикл for, и функция map() могут помочь вам создать новый список на основе существующего. Но код не отличается лаконичностью и красотой.

Чтобы помочь вам создать список на основе преобразования элементов существующего списка, в Python предусмотрена функция, называемая list comprehensions.

Ниже показано, как использовать понимание списка для создания списка квадратов из списка numbers:

numbers = [1, 2, 3, 4, 5] squares = [number**2 for number in numbers] print(squares)
Code language: Python (python)

А вот и часть понимания списка:

squares = [number**2 for number in numbers]
Code language: Python (python)

Понимание списка состоит из следующих частей:

  • Входной список (numbers)
  • Переменная, которая представляет элементы списка (number)
  • Выходное выражение (number**2), которое возвращает элементы выходного списка из элементов входного списка.

Ниже показан основной синтаксис понимания списка в Python:

[output_expression for element in list]
Code language: Python (python)

Это эквивалентно следующему:

output_list = [] for element in list: output_list.append(output_expression)
Code language: Python (python)

Вычисление списка Python с условием if

Ниже показан список пяти самых высоких гор на Земле:

mountains = [ ['Makalu', 8485], ['Lhotse', 8516], ['Kanchendzonga', 8586], ['K2', 8611], ['Everest', 8848] ]
Code language: Python (python)

Чтобы получить список гор, высота которых больше 8600 метров, можно использовать цикл for или функцию filter() с лямбда-выражением, как показано ниже:

mountains = [ ['Makalu', 8485], ['Lhotse', 8516], ['Kanchendzonga', 8586], ['K2', 8611], ['Everest', 8848] ] highest_mountains = list(filter(lambda m: m[1] > 8600, mountains)) print(highest_mountains)
Code language: Python (python)

Вывод:

[['K2', 8611], ['Everest', 8848]]
Code language: Python (python)

Как и функция map(), функция filter() возвращает итератор. Поэтому для преобразования итератора в список необходимо использовать функцию list().

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

[output_expression for element in list if condition]
Code language: Python (python)

Это понимание списка позволяет заменить filter() на лямбда-выражение:

mountains = [ ['Makalu', 8485], ['Lhotse', 8516], ['Kanchendzonga', 8586], ['K2', 8611], ['Everest', 8848] ] highest_mountains = [m for m in mountains if m[1] > 8600] print(highest_mountains)
Code language: Python (python)

Вывод:

[['K2', 8611], ['Everest', 8848]]
Code language: Python (python)

Резюме

  • Постижения списков Python позволяют создать новый список из существующего.
  • Используйте понимания списков вместо map() или filter(), чтобы сделать ваш код более кратким и читабельным.

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