De methode filter() filtert de gegeven reeks met behulp van een functie die elk element in de reeks test of het waar is of niet.
Python-filter() Syntaxis
De filter()-methode in Python heeft de volgende syntaxis:
Syntaxis: filter(functie, volgorde)
Parameters:
bfs versus dfs
- functie: functie die test of elk element van een reeks waar is of niet.
- reeks: reeks die moet worden gefilterd, dit kunnen sets, lijsten, tupels of containers van willekeurige iteratoren zijn.
Geeft terug: een iterator die al is gefilterd.
Python-filter Functievoorbeelden
Laten we een paar voorbeelden bekijken van de functie filter() in Python.
Python-filterfunctie met een aangepaste functie
In dit voorbeeld gebruiken we de filterfunctie samen met een aangepaste functie plezier() om klinkers uit de Python-lijst .
Python
# function that filters vowels> def> fun(variable):> > letters> => [> 'a'> ,> 'e'> ,> 'i'> ,> 'o'> ,> 'u'> ]> > if> (variable> in> letters):> > return> True> > else> :> > return> False> # sequence> sequence> => [> 'g'> ,> 'e'> ,> 'e'> ,> 'j'> ,> 'k'> ,> 's'> ,> 'p'> ,> 'r'> ]> # using filter function> filtered> => filter> (fun, sequence)> print> (> 'The filtered letters are:'> )> for> s> in> filtered:> > print> (s)> |
>
>
Harald Baldr
Uitgang:
The filtered letters are: e e>
Filterfunctie in Python met Lambda
De functie Python filter() wordt normaal gesproken gebruikt bij Lambda-functies . In dit voorbeeld gebruiken we de lambda-functie om de oneven en even getallen uit een lijst te filteren.
Python3
# a list contains both even and odd numbers.> seq> => [> 0> ,> 1> ,> 2> ,> 3> ,> 5> ,> 8> ,> 13> ]> # result contains odd numbers of the list> result> => filter> (> lambda> x: x> %> 2> !> => 0> , seq)> print> (> list> (result))> # result contains even numbers of the list> result> => filter> (> lambda> x: x> %> 2> => => 0> , seq)> print> (> list> (result))> |
>
double to string java
>
Uitgang:
[1, 3, 5, 13] [0, 2, 8]>
Filterfunctie in Python met Lambda en aangepaste functie
In dit programma zullen we beide een aangepaste functie gebruiken is_meerdere_van_3() evenals een lambda-functie. De functie filter() wordt gebruikt om deze functie op elk element van de getallenlijst toe te passen, en de functie lambda wordt gebruikt om elk element van de lijst te doorlopen voordat de voorwaarde wordt toegepast. Op deze manier kunnen we aanvullende bewerkingen op elk element uitvoeren voordat we de voorwaarde toepassen.
Python3
# Define a function to check> # if a number is a multiple of 3> def> is_multiple_of_3(num):> > return> num> %> 3> => => 0> # Create a list of numbers to filter> numbers> => [> 1> ,> 2> ,> 3> ,> 4> ,> 5> ,> 6> ,> 7> ,> 8> ,> 9> ,> 10> ]> # Use filter and a lambda function to> # filter the list of numbers and only> # keep the ones that are multiples of 3> result> => list> (> filter> (> lambda> x: is_multiple_of_3(x), numbers))> # Print the result> print> (result)> |
>
>
hippe taalUitvoer
[3, 6, 9]>
Tijdcomplexiteitsanalyse
- De filterfunctie wordt gebruikt om de lijst met getallen te filteren en past de lambda-functie toe op elk element van de lijst. De tijdscomplexiteit van de filterfunctie is O(n), waarbij n het aantal elementen in de lijst is.
- De tijdscomplexiteit van de lambdafunctie is constant, O(1), aangezien deze slechts één rekenkundige bewerking uitvoert. Daarom is de totale tijdscomplexiteit van het programma O(n).
Hulpruimteanalyse
Het programma gebruikt een lijst om de gefilterde getallen op te slaan, zodat de complexiteit van de ruimte evenredig is aan het aantal gefilterde getallen. In het ergste geval, als alle getallen een veelvoud van 3 zijn, bevat de gefilterde lijst n/3 elementen. Daarom is de ruimtecomplexiteit O(n/3), wat vereenvoudigt tot O(n) in grote O-notatie.