Как фильтровать элементы списка в Python

Краткое описание: в этом уроке вы узнаете, как фильтровать элементы списка с помощью встроенной функции Python filter().

Введение в функцию Python filter()

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

Предположим, что у вас есть следующий список scores:

scores = [70, 60, 80, 90, 50]
Code language: Python (python)

Чтобы получить все элементы из списка scores, где каждый элемент больше или равен 70, вы используете следующий код:

scores = [70, 60, 80, 90, 50] filtered = [] for score in scores: if score >= 70: filtered.append(score) print(filtered)
Code language: Python (python)

Как это работает.

  • Во-первых, определите пустой список (filtered), который будет содержать элементы из списка scores.
  • Во-вторых, выполните итерации над элементами списка scores. Если элемент больше или равен 70, добавьте его в список filtered.
  • В-третьих, выведите список filtered на экран.

В Python есть встроенная функция filter(), которая позволяет фильтровать список (или кортеж) более красивым способом.

Ниже показан синтаксис функции filter():

filter(fn, list)
Code language: Python (python)

Функция filter() выполняет итерацию по элементам списка и применяет функцию fn() к каждому элементу. Она возвращает итератор для элементов, где fn() возвращает True.

На самом деле, во второй аргумент функции filter() можно передать любой итератор, а не только список.

Ниже показано, как использовать функцию filter() для возврата списка scores, в котором каждый балл больше или равен 70:

scores = [70, 60, 80, 90, 50] filtered = filter(lambda score: score >= 70, scores) print(list(filtered))
Code language: Python (python)

Вывод:

[70, 80, 90]
Code language: Python (python)

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

Использование функции Python filter() для фильтрации списка кортежей пример

Предположим, у вас есть следующий список кортежей:

countries = [ ['China', 1394015977], ['United States', 329877505], ['India', 1326093247], ['Indonesia', 267026366], ['Bangladesh', 162650853], ['Pakistan', 233500636], ['Nigeria', 214028302], ['Brazil', 21171597], ['Russia', 141722205], ['Mexico', 128649565] ]
Code language: Python (python)

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

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

countries = [ ['China', 1394015977], ['United States', 329877505], ['India', 1326093247], ['Indonesia', 267026366], ['Bangladesh', 162650853], ['Pakistan', 233500636], ['Nigeria', 214028302], ['Brazil', 21171597], ['Russia', 141722205], ['Mexico', 128649565] ] populated = filter(lambda c: c[1] > 300000000, countries) print(list(populated))
Code language: Python (python)

Вывод:

[['China', 1394015977], ['India', 1326093247], ['United States', 329877505]]
Code language: Python (python)

Сводка

  • Используйте функцию Python filter() для фильтрации списка (или кортежа).

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