Il metodo filter() filtra la sequenza data con l'aiuto di una funzione che verifica che ogni elemento nella sequenza sia vero o meno.
Sintassi filtro Python()
Il metodo filter() in Pitone ha la seguente sintassi:
Sintassi: filtro(funzione, sequenza)
parametri:
stringa dell'elenco Java
- funzione: funzione che verifica se ogni elemento di una sequenza è vero o no.
- sequenza: sequenza che deve essere filtrata, può essere insiemi, elenchi, tuple o contenitori di qualsiasi iteratore.
Ritorna: un iteratore già filtrato.
Esempi di funzioni di filtro Python
Vediamo alcuni esempi della funzione filter() in Python.
Funzione filtro Python con una funzione personalizzata
In questo esempio, stiamo utilizzando la funzione di filtro insieme a una funzione personalizzata divertimento() per filtrare le vocali dal Elenco Python .
Pitone
# 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)> |
>
>
Produzione:
The filtered letters are: e e>
Funzione di filtro in Python con Lambda
La funzione Python filter() viene normalmente utilizzata con Funzioni lambda . In questo esempio, stiamo utilizzando la funzione lambda per filtrare i numeri pari e dispari da un elenco.
Python3
cucchiaino contro cucchiaio
# 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))> |
>
>
Produzione:
[1, 3, 5, 13] [0, 2, 8]>
Funzione di filtro in Python con Lambda e funzione personalizzata
In questo programma utilizzeremo sia una funzione personalizzata è_multiplo_di_3() così come una funzione lambda. La funzione filter() viene utilizzata per applicare questa funzione a ciascun elemento dell'elenco di numeri e la funzione lambda viene utilizzata per scorrere ciascun elemento dell'elenco prima di applicare la condizione. In questo modo possiamo eseguire operazioni aggiuntive su ciascun elemento prima di applicare la condizione.
Python3
carattere in lattice di dimensioni
obj in Java
# 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)> |
>
>Produzione
[3, 6, 9]>
Analisi della complessità temporale
- La funzione filter viene utilizzata per filtrare l'elenco di numeri e applica la funzione lambda a ciascun elemento dell'elenco. La complessità temporale della funzione di filtro è O(n), dove n è il numero di elementi nell'elenco.
- La complessità temporale della funzione lambda è costante, O(1), poiché esegue una sola operazione aritmetica. Pertanto, la complessità temporale complessiva del programma è O(n).
Analisi dello spazio ausiliario
Il programma utilizza un elenco per memorizzare i numeri filtrati, quindi la complessità dello spazio è proporzionale al numero di numeri filtrati. Nel peggiore dei casi, se tutti i numeri sono multipli di 3, l'elenco filtrato avrà n/3 elementi. Pertanto, la complessità dello spazio è O(n/3), che si semplifica in O(n) nella notazione O grande.