[Tutor] filter() builtin function
dn
PyTutor at DancesWithMice.info
Thu Sep 30 14:54:42 EDT 2021
On 30/09/2021 22.22, Cameron Simpson wrote:
> On 30Sep2021 14:29, Manprit Singh <manpritsinghece at gmail.com> wrote:
>> For the filter function in Python documentation , a line is written as
>> below:
>>
>> Construct an iterator from those elements of *iterable* for which *function*
>> returns true.
>>
>> *What does that true means - Boolen value True or true object - for
>> example 1*
>
> A true object will do.
>
>> *Like if I need only odd numbers from a list , what will be the correct
>> lambda function to be placed inside the filter function ?*
>
> A test that a number is odd:
>
> lambda n: test-if-n-is-odd
>
>> *lambda x: x%2 (That will return 1 for odd numbers which is a true
>> object)*
>
> That would do. I would probably be inclined to go the whole way:
>
> lambda x: x%2 == 1
>
> to make my meaning clear.
>
>> *lambda x : x%2 == 1 ( Will return Boolean True for odd numbers)*
>
> I'd do that, but only for purposes of clarity.
>
>> seq = [2, 3, 6, 9, 0, 7]
>> list(filter(lambda x: x%2, seq))
>> gives the answer
>> = [3, 9, 7]
>
> Seems correct.
>
>> seq = [2, 3, 6, 9, 0, 7]
>> list(filter(lambda x: x%2 == 1, seq)) also gives the same answer = [3, 9, 7]
>>
>> Which one is the correct way to do the task solved just above in 2
>> ways ?
>
> They're both correct. The second one more precisely specifies "oddness".
>
> You seem heavily invested in "correct" and 'acceptable" ways to do
> things. For many of us, there are good ways and bad ways to do things,
> but things are only "incorrect" if they will give wrong answers i.e.
> they are buggy.
>
> As usual my generic advice is:
> - concise
> - readable
+1
Surely though, are themselves arguments against using an (unnamed)
lambda function, instead of:
def is_odd( number ):
return number % 2 == 1
leading to:
list( filter( is_odd, seq) )
instead of:
list(filter(lambda x: x%2, seq))
Zen: explicit > implicit
If valuing "concise" and "clever", consider employing
list-comprehensions/generators.
--
Regards,
=dn
More information about the Tutor
mailing list