Как да филтрирате списък в Python по правилния начин, за да извлечете повече от вашите данни

В Python един от най-популярните начини за съхраняване на последователни или подредени данни е чрез използването на списъци. Списъкът в Python е подредена, променлива, вградена структура от данни, която се използва за съхраняване на колекция от данни. Елементите, съхранявани в списък, се индексират, започвайки от нула, и потребителите могат да променят съдържанието на списък, след като е бил създаден.

Фактът, че елементите в списъка са индексирани, позволява съхраняването на дублиращи се елементи в списък. Списъците в Python също могат да съдържат елементи от различни типове данни. Елементите в списъка се разделят със запетаи и се затварят в квадратни скоби.

Ето примери за списъци в Python:

# A list containing one data type - String
colors = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']

# A list containing multiple data types
movies = ['Transformers', 2012, 'Avengers', 300]

# A list with duplicate values
users = ['John', 'Mary', 'Elizabeth', 'John']

Списъците са много гъвкава структура от данни и можете да извършвате много операции върху данните, съхранявани в списъци. Една обща и полезна операция, извършвана върху списъци, е филтрирането на данните, съхранени в списъка.

Защо филтрирането на списъци е важно

Филтрирането на списък означава извличане на конкретни подгрупи от данни, които отговарят на даден критерий. Например, може да се интересуваме само от четни числа в списък, съдържащ числата от 1 до 10. За да извлечем такива данни от списъка, всичко, което трябва да направим, е да филтрираме списъка, за да получим числа, които се делят точно на две.

Филтрирането е особено полезно при манипулиране на данни и анализ на данни, тъй като позволява премахване на нежелани елементи от списъци, създаване на нови списъци, съдържащи елементи, които отговарят на зададени критерии, и извличане на данни, които отговарят на определени условия.

Някои реални приложения на списъци за филтриране включват:

  • Проверка на данни – Когато работите със списък, може да искате да работите само с данни, които отговарят на даден критерий. Например в списък с потребители може да се интересувате от потребители както с име, така и с фамилия. Филтрирането може да ви позволи да проверите и валидирате данните в списъка, преди да ги обработите. По този начин избягвате да работите с данни, които не отговарят на вашите изисквания.
  • Почистване на данни – Тъй като списъците могат да съхраняват различни типове данни, не е рядкост да откриете, че списъците съдържат нежелани данни, които не ви интересуват. Например, в списък, съдържащ имена, може да не се интересувате от числови стойности в Списъкът. Чрез филтриране можете да премахнете нежеланите данни.
  • Анализ на данни – Филтрирането на данни е особено полезно при анализа на данни, тъй като ви позволява да се съсредоточите върху конкретни подгрупи от данни, което ви позволява лесно да идентифицирате модели и тенденции. Например в списък със студенти можете да филтрирате студенти и студенти и да използвате резултата при анализ на данни. Можете дори да филтрирате според възраст, местоположение и клас. Това ви позволява да извлечете по-полезни заключения от конкретни подгрупи от данни в списък
  Деинсталирайте или деактивирайте iTunes на Mac OS X [Guide]

Филтрирането на списъци е много полезна функция, тъй като ви дава контрол върху данните, съхранявани в списък, което ви позволява да работите само с данните, които ви интересуват.

Насочването към конкретни подмножества от данни, съхранявани в списък, е много полезно, тъй като рационализира обработката и анализа на данни, правейки процесите по-добри, по-бързи и по-точни.

Използване на функция filter().

Функцията filter() е вградена функция на Python, която може да се използва за итерация през итерируем елемент като списък, кортежи, набор или речник и извличане на елементи в итерируемия елемент, които отговарят на дадено условие.

Итерируемият в Python е обект, който може да бъде преминаван през своите елементи един по един. Итерирането през итерируем връща елементите в итерируемия един по един.

Синтаксисът на филтърната функция е както следва:

filter(function, iterable)

функция – функция на Python, която съдържа условието за филтриране

итерируем – итерируемият, който ще бъде филтриран. В този случай ще използваме списък.

Функцията filter() взема предадената функция и я прилага към всеки елемент в предадения итерируем, като тества условието за филтриране спрямо елемента. Ако елементът отговаря на условието, т.е. той връща булевото значение true, което ще бъде избрано от функцията filter(). В случай, че не отговаря на условието, артикулът не се избира.

Функцията filter() връща итерируема с елементи, които са преминали условието за филтриране. Можете да създадете нов списък, съдържащ елементи, които са преминали условието за филтриране, като използвате функцията list().

За да видите функцията filter() в действие, разгледайте списъка по-долу, който се филтрира, за да изберете числа, които са по-малки от 50:

#A list of numbers
numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

# function containing the filtering condition
def is_even(num):
   if num < 50:
      return True
   else:
      return False

# the function list() is used to create a list from the iterable
# returned by the filter() function
filtered_numbers = list(filter(is_even, numbers))
print(filtered_numbers)

Горният код отпечатва следния резултат:

[15, 46, 24, 37]

Използване на for цикъл

В Python for цикълът е команда за контролен поток, използвана за итерация на последователни структури от данни като списък, кортежи, низове/ и масиви. Цикълът for многократно изпълнява блок от код за всеки елемент в последователност.

  11 най-добри устройства за наблюдение на качеството на въздуха за по-свежи бели дробове

Общият синтаксис за for цикъл е както следва:

for item in iterable:
    # Block of code to be executed for each item in the iterabele

item – променлива, представляваща текущия елемент, който се обработва в итерация на цикъла

iterable – последователността, върху която for цикълът итерира. В този случай списък

За да филтрираме списък с помощта на for цикъл, ще трябва да предадем нашето условие за филтриране в секцията за блока от код, който трябва да бъде изпълнен. По този начин всеки елемент ще бъде оценен, за да се види дали отговаря на дадено условие.

Когато използвате for цикъл за филтриране на списък, вие също трябва да създадете празен списък, където ще добавите стойности, които преминават вашето условие за филтриране.

За да видите това в действие, нека филтрираме списък с числа, за да получим числа, по-малки от 50, като използваме for цикъл:

numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

filtered_numbers = []

for num in numbers:
    if num < 50:
        # append() used to add a number that passes the condition
        # into filtered_numbers.
        filtered_numbers.append(num)

print(filtered_numbers)

Горният код отпечатва следния резултат:

[15, 46, 24, 37]

Използване на друг списък

Можете да филтрирате списък, като използвате друг, като проверите дали елемент от списък, който искате да филтрирате, се появява в друг списък. Например, разгледайте следните два списъка

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']

vowels = ['a', 'e', 'i', 'o', 'u']

В списъка, наречен букви по-горе, можем да определим кои елементи в списъка не са гласни, като проверим дали елементът се появява в списъка с гласни или не. Ако даден елемент не се показва в списъка с гласни, значи това не е гласна.

По този начин можем да получим всички знаци в букви, които не са гласни. За да направите това, изпълнете следния код:

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vowels = ['a', 'e', 'i', 'o', 'u']

not_vowel = []

for letter in letters:
    if letter not in vowels:
        not_vowel.append(letter)
print(not_vowel)

Горният код отпечатва следния изход, който съдържа знаци в букви, които не са гласни.

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

Използване на списък с разбиране

В Python разбирането на списъци предлага по-кратък, по-сбит и по-чист синтаксис за създаване на нов списък от съществуващ списък. Разбирането на списъци има способността да намали множеството редове код, използвани за създаване на нов списък от друг списък с помощта на for цикъл, в един ред.

  8 най-добри производители на бланки за брандиране на вашия бизнес

Това е така, защото когато използвате разбиране на списък, вие дефинирате и добавяте елементи към новия списък на един ред.

Синтаксисът за разбиране на списък е както следва:

new_list = [expression for element in iterable if condition]

new_list – нов списък, съдържащ елементи, добавени от разбирането на списъка

израз – операция, която ще бъде приложена към всеки елемент от итерируемия

item – име на променлива, представляваща текущия активен елемент в итерируемия

iterable – итерируем, от който ще се избират елементи.

if условие – незадължителна част, където може да се добави условие за филтриране на елементи, за да се добавят само тези, които отговарят на дадено условие в новия списък, който се създава.

За да видим разбирането на списъка в действие и колко може да опрости процеса на филтриране и създаване на нов списък, ще използваме списъка с букви и гласни, за да филтрираме елементи в списъка с букви, които не са в списъка с гласни. За да направите това, изпълнете следния код:

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vowels = ['a', 'e', 'i', 'o', 'u']

# list comprehension
not_vowel = [letter for letter in letters if letter not in vowels]
print(not_vowel)

Резултатът от горния код е показан по-долу:

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

Резултатът е подобен на предишния пример, който използва for цикъл за филтриране на списък с друг списък. Той обаче използва по-малко редове код, за да постигне същия резултат.

Заключение

Когато работите с данни в Python, обичайна операция, която сте длъжни да извършите, е филтриране на данни от итерируем, като например списък. Това е много полезна стъпка в анализа и обработката на данни, тъй като ви позволява да работите само с данни, които са от значение за извършваната операция или обработка.

Много популярна последователна структура на данни в Python е списъкът. В случай, че установите, че работите със списък и трябва да го филтрирате, обмислете използването на някой от методите, подчертани в статията.

Можете също така да прочетете как да използвате ламбда функции в Python с примери.