Python Forum

Full Version: I don't understand this result
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
>>> a = [1, 2, 4, 5]
>>> def az():
            x * 2

>>> q = map(az, [2, 3, 4])
>>> list(q)
[None, None, None]
You forgot to return the value computed in your function:

>>> def az(x):
...   return x*2
... 
>>> q = map(az, [2, 3, 4])
>>> list(q)
[4, 6, 8]
This code is incomplete.
the definition of az is was missing it's body ok now
just to mention that there is no need to explicitly convert the result to list
>>> def az(x):
return x*2

>>> q = map(az, [2, 3, 4])
>>> q
[4, 6, 8]
(Mar-27-2017, 12:10 PM)buran Wrote: [ -> ]just to mention that there is no need to explicitly convert the result to list
Python 3 has changed a lot buran Wink
# Python 3.6
>>> def az(x):
...     return x*2
... 
>>> q = map(az, [2, 3, 4])
>>> q
<map object at 0x049C8EB0>
>>> list(q)
[4, 6, 8]
# Python 2.7
>>> def az(x):
...     return x * 2
...     
>>> q = map(az, [2, 3, 4])
>>> q
[4, 6, 8]
Built-ins like range, map, zip, filter become iterables in 3.x to conserve space,
rather than producing a result list all at once in memory.
(Mar-27-2017, 01:53 PM)snippsat Wrote: [ -> ]Python 3 has changed a lot buran Wink

Built-ins like range, map, zip, filter become iterables in 3.x to conserve space,
rather than producing a result list all at once in memory.
Funny part is - I know it, but I tend to think python2 more often than python3