Python iebūvētā filtra() funkcija ir arī spēcīga; datu filtrēšanas procedūru veikšanai tādām sekvencēm kā saraksti, korteži un virknes. Funkcija filter() tiek izmantota, lai lietotu funkciju katram iterējamā elementam (piemēram, sarakstam vai kortei) un atgrieztu citu iterējamu, kurā ir tikai tie elementi, kuriem funkcija atgriež True. Līdz ar to filtrs () ļauj mums filtrēt elementus no grupas, pamatojoties uz kādu nosacījumu. Pirmais arguments var būt Nav, ja funkcija nav pieejama un atgriež tikai elementus, kas ir patiesi.
Sintakse:
filter (function, iterable)
Parametri
funkcija: Tā ir funkcija. Ja iestatīts uz Nav, atgriež tikai tos elementus, kas ir patiesi.
Atkārtojams: Jebkura atkārtojama secība, piemēram, saraksts, virkne un virkne.
Ir nepieciešami abi parametri.
Atgriezties
Tas atgriež to pašu, ko atgriež funkcija.
Apskatīsim dažus filtra() funkcijas piemērus, lai saprastu tās funkcionalitāti.
Python filter() Funkcijas 1. piemērs
Šis vienkāršais piemērs atgriež vērtības, kas ir lielākas par 5, izmantojot filtra funkciju. Skatiet zemāk redzamo piemēru.
Kods
# Python filter() function example def filterdata(x): if x>5: return x # Calling function result = filter(filterdata,(1,2,6)) # Displaying result print(list(result))
Izvade:
[6]
Kods definē funkciju, ko sauc par filtra datiem, kas izmanto vienu argumentu x. Šajā funkcijā mēs pārbaudām, pieņemot, ka x ir lielāks par 5, un, ja tas ir patiess, mēs izdrukājam x. Pēc tam mēs izsaucam filtru() funkciju, kā galveno argumentu nododot filtra datus un kā nākamo argumentu kortei (1, 2, 6). Funkcija filtrs() lieto funkciju filterdata() katram kortedža elementam un atgriež iteratoru, kurā ir tikai tie elementi, kas atbilst nosacījumam x > 5. Visbeidzot, mēs pārvēršam iteratoru sarakstā, izmantojot funkciju list() un izdrukājiet rezultātu.
Tālāk ir sniegti daži papildu piemēri, kā Python izmantot filtru () metodi:
2. piemērs:
Filtrējiet tukšās virknes no saraksta:
Kods
# Python filter() function example strings = [ '', 'hello', '', 'world', '' ] # Using filter() to remove empty strings from the list result = list(filter(lambda x: x != '', strings)) # Printing the result print(result)
Izvade:
[ 'hello', 'world' ]
Šajā piemērā lambda funkcija pārbauda, vai katra virkne nav tukša, pārbaudot, pieņemot, ka tā ir līdzvērtīga tukšai virknei (''). Funkcija filtrs () atgriež citu iterējamu, kurā ir tikai virknes, kas nav tukšas.
3. piemērs:
Filtrējiet negatīvos skaitļus no saraksta:
Kods
# Python filter() function example numbers = [ 1, -2, 3, -4, 5, -6 ] # Using filter() to remove negative numbers from the list result = list(filter(lambda x: x >= 0, numbers)) # Printing the result print(result)
Izvade:
[1, 3, 5]
Šajā piemērā lambda funkcija pārbauda, pieņemot, ka katrs skaitlis nav negatīvs, pārbaudot, ja tas ir pamanāmāks par nulli (0) vai līdzvērtīgs tai. Funkcija filtrs () atgriež citu iterējamu, kurā ir tikai nenegatīvi skaitļi.
4. piemērs:
Filtrējiet dublikātus no saraksta:
Kods
# Python filter() function example numbers = [ 1, 2, 3, 2, 4, 3, 5 ] # Using filter() to remove duplicate numbers from the list result = list(filter(lambda x: numbers.count(x) == 1, numbers)) # Printing the result print(result)
Izvade:
[ 1, 4, 5 ]
Šajā piemērā lambda funkcija pārbauda, vai katrs skaitlis skaitļu sarakstā parādās tikai vienu reizi, saskaitot, cik bieži tas tiek parādīts (numbers.count(x)) un pārbaudot, ja skaits ir līdzvērtīgs 1. Funkcija filter() atgriež citu iterējamu, kurā ir tikai unikālie skaitļi.
Piezīme. Ir svarīgi, ka programmā Python 3 funkcija filter() atgriež iterējamu, un tas nozīmē, ka jūs patiešām vēlaties to pilnībā mainīt uz sarakstu (kā parādīts iepriekš minētajos piemēros), lai iekļautu to kā sarakstu. Tomēr Python 2 funkcija filter () atgriež sarakstu, protams.
Secinājums:
Visbeidzot, funkcija filter () ir spēcīgs rīks datu manipulēšanai Python. Filtrējot atkārtojamību, pamatojoties uz iepriekš definētu nosacījumu, varat ātri un efektīvi atdalīt datus, kurus patiešām vēlaties. Varat arī izmantot filtru () kombinācijā ar citām Python funkcijām, lai veiktu sarežģītākas datu manipulācijas.