SlideShare a Scribd company logo
By
S VISNU DHARSINI A.P/CSE
 Python provides several functions which enable a functional
approach to programming. These functions are all
convenience features in that they can be written in Python
fairly easily.
 Functional programming is all about expressions. We may say
that the Functional programming is an expression oriented
programming.
 Expression oriented functions of Python provides are:
 map(aFunction, aSequence)
 filter(aFunction, aSequence)
 reduce(aFunction, aSequence)
 lambda
 list comprehension
 One of the common things we do with list and other sequences is applying an
operation to each item and collect the result.
 For example, updating all the items in a list can be done easily with a for loop:
 >>> items = [1, 2, 3, 4, 5]
 >>> squared = []
 >>> for x in items:
 squared.append(x ** 2)
 >>> squared [1, 4, 9, 16, 25]
 Since this is such a common operation, actually, we have a built-in feature that
does most of the work for us.
 The map(aFunction, aSequence) function applies a passed-in function
to each item in an iterable object and returns a list containing all the
function call results.
 >>> items = [1, 2, 3, 4, 5]
 >>> def sqr(x): return x ** 2
 >>> list(map(sqr, items))
 [1, 4, 9, 16, 25]
 We passed in a user-defined function applied to each item in the list.
map calls sqr on each list item and collects all the return values into a
new list.
 While we still use lamda as a aFunction, we can have a list of
functions as aSequence:
 def square(x):
 return (x**2)
 def cube(x):
 return (x**3)
 funcs = [square, cube]
 for r in range(5):
 value = map(lambda x: x(r), funcs)
 print value
 Output:
 [0, 0] [1, 1] [4, 8] [9, 27] [16, 64]
 Because using map is equivalent to for loops, with an extra code we can always write a
general mapping utility:
 >>> def mymap(aFunc, aSeq):
 result = []
 for x in aSeq: result.append(aFunc(x))
 return result
 >>> list(map(sqr, [1, 2, 3]))
 [1, 4, 9]
 >>> mymap(sqr, [1, 2, 3])
 [1, 4, 9]
 Since it's a built-in, map is always available and always works the same way. It also has
some performance benefit because it is usually faster than a manually coded for loop.
On top of those, map can be used in more advance way. For example, given multiple
sequence arguments, it sends items taken form sequences in parallel as distinct
arguments to the function:
 >>> pow(3,5)
 243
 >>> pow(2,10)
 1024
 >>> pow(3,11)
 177147
 >>> pow(4,12)
 16777216
 >>>
 >>> list(map(pow, [2, 3, 4], [10, 11, 12]))
 [1024, 177147, 16777216]
 As in the example above, with multiple sequences, map() expects an N-argument
function for N sequences. In the example, pow function takes two arguments on
each call.
 Here is another example of map() doing element-wise addition with two lists:
 x = [1,2,3]
 y = [4,5,6]
 from operator import add
 print map(add, x, y) # output [5, 7, 9]
 The map call is similar to the list comprehension expression.
But map applies a function call to each item instead of an
arbitrary expression. Because of this limitation, it is somewhat
less general tool. In some cases, however, map may be faster
to run than a list comprehension such as when mapping a
built-in function. And map requires less coding.
 If function is None, the identity function is assumed; if there
are multiple arguments, map() returns a list consisting of
tuples containing the corresponding items from all iterables (a
kind of transpose operation). The iterable arguments may be
a sequence or any iterable object; the result is always a list:
 >>> m = [1,2,3]
 >>> n = [1,4,9]
 >>> new_tuple = map(None, m, n)
 >>> new_tuple
 [(1, 1), (2, 4), (3, 9)]
 we may want to use itertools.zip_longest instead:
 >>> m = [1,2,3]
 >>> n = [1,4,9]
 >>> from itertools import zip_longest
 >>> for i,j in zip_longest(m,n):
 ... print(i,j)
 ...
 1 1
 2 4
 3 9
 The zip_longest() makes an iterator that aggregates elements from the two iterables (m & n).
 We can do typecasting using map. In the following example, we construct 4x3
matrix from the user input:
 for _ in range(4):
 arr.append(list(map(int, input().rstrip().split())))
 print(arr)
 With an input from the user:
 1 2 3
 4 5 6
 7 8 9
 10 11 12
 As the name suggests filter extracts each element in the sequence for which the
function returns True. The reduce function is a little less obvious in its intent. This
function reduces a list to a single value by combining elements via a supplied
function. The map function is the simplest one among Python built-ins used for
functional programming.
 These tools apply functions to sequences and other iterables. The filter filters out
items based on a test function which is a filter and apply functions to pairs of item
and running result which is reduce.
 Because they return iterables, range and filter both require list calls to display all
their results in Python 3.0.
 As an example, the following filter call picks out items in a sequence that are less
than zero:
 As an example, the following filter call picks out items in a sequence
that are less than zero:
 >>> list(range(-5,5))
 [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]
 >>>
 >>> list( filter((lambda x: x < 0), range(-5,5)))
 [-5, -4, -3, -2, -1]
 >>>
 Items in the sequence or iterable for which the function returns a true, the result are
added to the result list. Like map, this function is roughly equivalent to a for loop, but it
is built-in and fast:
 >>>
 >>> result = []
 >>> for x in range(-5, 5):
 if x < 0:
 result.append(x)
 >>> result
 [-5, -4, -3, -2, -1]
 >>>
 Here is another use case for filter(): finding intersection of two lists:
 a = [1,2,3,5,7,9]
 b = [2,3,5,6,7,8]
 print filter(lambda x: x in a, b) # prints out [2, 3, 5, 7]
 Note that we can do the same with list comprehension:
 a = [1,2,3,5,7,9]
 b = [2,3,5,6,7,8]
 print [x for x in a if x in b] # prints out [2, 3, 5, 7]
 The reduce is in the functools in Python 3.0. It is more complex. It accepts an iterator to
process, but it's not an iterator itself. It returns a single result:
 >>>
 >>> from functools import reduce
 >>> reduce( (lambda x, y: x * y), [1, 2, 3, 4] )
 24
 >>> reduce( (lambda x, y: x / y), [1, 2, 3, 4] )
 0.041666666666666664
 >>>
 At each step, reduce passes the current product or division, along with the next item from the
list, to the passed-in lambda function. By default, the first item in the sequence initialized the
starting value.
 Here's the for loop version of the first of these calls, with the
multiplication hardcoded inside the loop:
 >>> L = [1, 2, 3, 4]
 >>> result = L[0]
 >>> for x in L[1:]:
 result = result * x
 >>> result
 24
 >>>
 We can concatenate a list of strings to make a sentence. Using the Dijkstra's famous quote
on bug:
 import functools
 >>> L = ['Testing ', 'shows ', 'the ', 'presence', ', ','not ', 'the ', 'absence ', 'of ', 'bugs']
 >>> functools.reduce( (lambda x,y:x+y), L)
 'Testing shows the presence, not the absence of bugs'
 >>>
 We can get the same result by using join :
 >>> ''.join(L)
 'Testing shows the presence, not the absence of bugs'
 We can also use operator to produce the same result:
 >>> import functools, operator
 >>> functools.reduce(operator.add, L)
 'Testing shows the presence, not the absence of bugs'
 >>>
 The built-in reduce also allows an optional third argument
placed before the items in the sequence to serve as a default
result when the sequence is empty.
Thank you

More Related Content

PDF
Matlab functions
PPTX
Parts of python programming language
PPTX
Python programming –part 3
PPTX
Python programming- Part IV(Functions)
PPTX
Python programming Part -6
PPTX
R: Apply Functions
PPTX
Control System Homework Help
Matlab functions
Parts of python programming language
Python programming –part 3
Python programming- Part IV(Functions)
Python programming Part -6
R: Apply Functions
Control System Homework Help

What's hot (20)

PPT
Linked list
PPTX
Python programming: Anonymous functions, String operations
PDF
PDF
Matlab ch1 intro
PPTX
Python- Regular expression
PPTX
Algorithm analysis and design
PPTX
Linked list
PPT
Database structure Structures Link list and trees and Recurison complete
PPT
Array Presentation (EngineerBaBu.com)
PDF
Algorithms: II
PPTX
Linked List - Insertion & Deletion
ODP
2.2 higher order-functions
PDF
Second chapter-java
PDF
Reasoning about laziness
PDF
Data structures arrays
PDF
Functional programming java
PPTX
Electrical Engineering Exam Help
PPT
PPTX
Grid search (parameter tuning)
Linked list
Python programming: Anonymous functions, String operations
Matlab ch1 intro
Python- Regular expression
Algorithm analysis and design
Linked list
Database structure Structures Link list and trees and Recurison complete
Array Presentation (EngineerBaBu.com)
Algorithms: II
Linked List - Insertion & Deletion
2.2 higher order-functions
Second chapter-java
Reasoning about laziness
Data structures arrays
Functional programming java
Electrical Engineering Exam Help
Grid search (parameter tuning)
Ad

Similar to Functions in advanced programming (20)

PPT
Python High Level Functions_Ch 11.ppt
PPTX
A brief introduction to apply functions
PDF
Introduction to haskell
PDF
TI1220 Lecture 6: First-class Functions
PDF
Spark workshop
PPTX
Function in Python.pptx by Faculty at gla university in mathura uttar pradesh
PDF
Monads in Swift
PDF
Python lambda functions with filter, map & reduce function
PDF
Practical cats
PPT
LECTURE 5-Function in Matlab how to use mathlab
PDF
Why Haskell Matters
PPT
Loops and functions in r
PPTX
matlab presentation fro engninering students
ODP
Functions In Scala
PPT
Introduction to matlab
PDF
Functional Programming by Examples using Haskell
PPTX
scripting in Python
PPTX
世预赛买球-世预赛买球竞彩平台-世预赛买球竞猜平台|【​网址​🎉ac123.net🎉​】
PPTX
美洲杯买球-美洲杯买球怎么押注-美洲杯买球押注怎么玩|【​网址​🎉ac99.net🎉​】
PPTX
欧洲杯足彩-欧洲杯足彩线上体育买球-欧洲杯足彩买球推荐网站|【​网址​🎉ac55.net🎉​】
Python High Level Functions_Ch 11.ppt
A brief introduction to apply functions
Introduction to haskell
TI1220 Lecture 6: First-class Functions
Spark workshop
Function in Python.pptx by Faculty at gla university in mathura uttar pradesh
Monads in Swift
Python lambda functions with filter, map & reduce function
Practical cats
LECTURE 5-Function in Matlab how to use mathlab
Why Haskell Matters
Loops and functions in r
matlab presentation fro engninering students
Functions In Scala
Introduction to matlab
Functional Programming by Examples using Haskell
scripting in Python
世预赛买球-世预赛买球竞彩平台-世预赛买球竞猜平台|【​网址​🎉ac123.net🎉​】
美洲杯买球-美洲杯买球怎么押注-美洲杯买球押注怎么玩|【​网址​🎉ac99.net🎉​】
欧洲杯足彩-欧洲杯足彩线上体育买球-欧洲杯足彩买球推荐网站|【​网址​🎉ac55.net🎉​】
Ad

Recently uploaded (20)

PDF
Queuing formulas to evaluate throughputs and servers
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
PPTX
24AI201_AI_Unit_4 (1).pptx Artificial intelligence
PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PPTX
Road Safety tips for School Kids by a k maurya.pptx
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
PPTX
Fluid Mechanics, Module 3: Basics of Fluid Mechanics
PDF
algorithms-16-00088-v2hghjjnjnhhhnnjhj.pdf
PPTX
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
PPTX
MET 305 MODULE 1 KTU 2019 SCHEME 25.pptx
PPTX
The-Looming-Shadow-How-AI-Poses-Dangers-to-Humanity.pptx
PPTX
anatomy of limbus and anterior chamber .pptx
PPT
Drone Technology Electronics components_1
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PDF
ETO & MEO Certificate of Competency Questions and Answers
PDF
오픈소스 LLM, vLLM으로 Production까지 (Instruct.KR Summer Meetup, 2025)
PPTX
CH1 Production IntroductoryConcepts.pptx
PPTX
Practice Questions on recent development part 1.pptx
Queuing formulas to evaluate throughputs and servers
Operating System & Kernel Study Guide-1 - converted.pdf
24AI201_AI_Unit_4 (1).pptx Artificial intelligence
Embodied AI: Ushering in the Next Era of Intelligent Systems
Road Safety tips for School Kids by a k maurya.pptx
Model Code of Practice - Construction Work - 21102022 .pdf
Fluid Mechanics, Module 3: Basics of Fluid Mechanics
algorithms-16-00088-v2hghjjnjnhhhnnjhj.pdf
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
MET 305 MODULE 1 KTU 2019 SCHEME 25.pptx
The-Looming-Shadow-How-AI-Poses-Dangers-to-Humanity.pptx
anatomy of limbus and anterior chamber .pptx
Drone Technology Electronics components_1
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
ETO & MEO Certificate of Competency Questions and Answers
오픈소스 LLM, vLLM으로 Production까지 (Instruct.KR Summer Meetup, 2025)
CH1 Production IntroductoryConcepts.pptx
Practice Questions on recent development part 1.pptx

Functions in advanced programming

  • 2.  Python provides several functions which enable a functional approach to programming. These functions are all convenience features in that they can be written in Python fairly easily.  Functional programming is all about expressions. We may say that the Functional programming is an expression oriented programming.
  • 3.  Expression oriented functions of Python provides are:  map(aFunction, aSequence)  filter(aFunction, aSequence)  reduce(aFunction, aSequence)  lambda  list comprehension
  • 4.  One of the common things we do with list and other sequences is applying an operation to each item and collect the result.  For example, updating all the items in a list can be done easily with a for loop:  >>> items = [1, 2, 3, 4, 5]  >>> squared = []  >>> for x in items:  squared.append(x ** 2)  >>> squared [1, 4, 9, 16, 25]  Since this is such a common operation, actually, we have a built-in feature that does most of the work for us.
  • 5.  The map(aFunction, aSequence) function applies a passed-in function to each item in an iterable object and returns a list containing all the function call results.  >>> items = [1, 2, 3, 4, 5]  >>> def sqr(x): return x ** 2  >>> list(map(sqr, items))  [1, 4, 9, 16, 25]  We passed in a user-defined function applied to each item in the list. map calls sqr on each list item and collects all the return values into a new list.
  • 6.  While we still use lamda as a aFunction, we can have a list of functions as aSequence:  def square(x):  return (x**2)  def cube(x):  return (x**3)  funcs = [square, cube]  for r in range(5):  value = map(lambda x: x(r), funcs)  print value  Output:  [0, 0] [1, 1] [4, 8] [9, 27] [16, 64]
  • 7.  Because using map is equivalent to for loops, with an extra code we can always write a general mapping utility:  >>> def mymap(aFunc, aSeq):  result = []  for x in aSeq: result.append(aFunc(x))  return result  >>> list(map(sqr, [1, 2, 3]))  [1, 4, 9]  >>> mymap(sqr, [1, 2, 3])  [1, 4, 9]
  • 8.  Since it's a built-in, map is always available and always works the same way. It also has some performance benefit because it is usually faster than a manually coded for loop. On top of those, map can be used in more advance way. For example, given multiple sequence arguments, it sends items taken form sequences in parallel as distinct arguments to the function:  >>> pow(3,5)  243  >>> pow(2,10)  1024  >>> pow(3,11)  177147  >>> pow(4,12)  16777216  >>>  >>> list(map(pow, [2, 3, 4], [10, 11, 12]))  [1024, 177147, 16777216]
  • 9.  As in the example above, with multiple sequences, map() expects an N-argument function for N sequences. In the example, pow function takes two arguments on each call.  Here is another example of map() doing element-wise addition with two lists:  x = [1,2,3]  y = [4,5,6]  from operator import add  print map(add, x, y) # output [5, 7, 9]
  • 10.  The map call is similar to the list comprehension expression. But map applies a function call to each item instead of an arbitrary expression. Because of this limitation, it is somewhat less general tool. In some cases, however, map may be faster to run than a list comprehension such as when mapping a built-in function. And map requires less coding.  If function is None, the identity function is assumed; if there are multiple arguments, map() returns a list consisting of tuples containing the corresponding items from all iterables (a kind of transpose operation). The iterable arguments may be a sequence or any iterable object; the result is always a list:
  • 11.  >>> m = [1,2,3]  >>> n = [1,4,9]  >>> new_tuple = map(None, m, n)  >>> new_tuple  [(1, 1), (2, 4), (3, 9)]
  • 12.  we may want to use itertools.zip_longest instead:  >>> m = [1,2,3]  >>> n = [1,4,9]  >>> from itertools import zip_longest  >>> for i,j in zip_longest(m,n):  ... print(i,j)  ...  1 1  2 4  3 9  The zip_longest() makes an iterator that aggregates elements from the two iterables (m & n).
  • 13.  We can do typecasting using map. In the following example, we construct 4x3 matrix from the user input:  for _ in range(4):  arr.append(list(map(int, input().rstrip().split())))  print(arr)  With an input from the user:  1 2 3  4 5 6  7 8 9  10 11 12
  • 14.  As the name suggests filter extracts each element in the sequence for which the function returns True. The reduce function is a little less obvious in its intent. This function reduces a list to a single value by combining elements via a supplied function. The map function is the simplest one among Python built-ins used for functional programming.  These tools apply functions to sequences and other iterables. The filter filters out items based on a test function which is a filter and apply functions to pairs of item and running result which is reduce.  Because they return iterables, range and filter both require list calls to display all their results in Python 3.0.  As an example, the following filter call picks out items in a sequence that are less than zero:
  • 15.  As an example, the following filter call picks out items in a sequence that are less than zero:  >>> list(range(-5,5))  [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]  >>>  >>> list( filter((lambda x: x < 0), range(-5,5)))  [-5, -4, -3, -2, -1]  >>>
  • 16.  Items in the sequence or iterable for which the function returns a true, the result are added to the result list. Like map, this function is roughly equivalent to a for loop, but it is built-in and fast:  >>>  >>> result = []  >>> for x in range(-5, 5):  if x < 0:  result.append(x)  >>> result  [-5, -4, -3, -2, -1]  >>>
  • 17.  Here is another use case for filter(): finding intersection of two lists:  a = [1,2,3,5,7,9]  b = [2,3,5,6,7,8]  print filter(lambda x: x in a, b) # prints out [2, 3, 5, 7]  Note that we can do the same with list comprehension:  a = [1,2,3,5,7,9]  b = [2,3,5,6,7,8]  print [x for x in a if x in b] # prints out [2, 3, 5, 7]
  • 18.  The reduce is in the functools in Python 3.0. It is more complex. It accepts an iterator to process, but it's not an iterator itself. It returns a single result:  >>>  >>> from functools import reduce  >>> reduce( (lambda x, y: x * y), [1, 2, 3, 4] )  24  >>> reduce( (lambda x, y: x / y), [1, 2, 3, 4] )  0.041666666666666664  >>>  At each step, reduce passes the current product or division, along with the next item from the list, to the passed-in lambda function. By default, the first item in the sequence initialized the starting value.
  • 19.  Here's the for loop version of the first of these calls, with the multiplication hardcoded inside the loop:  >>> L = [1, 2, 3, 4]  >>> result = L[0]  >>> for x in L[1:]:  result = result * x  >>> result  24  >>>
  • 20.  We can concatenate a list of strings to make a sentence. Using the Dijkstra's famous quote on bug:  import functools  >>> L = ['Testing ', 'shows ', 'the ', 'presence', ', ','not ', 'the ', 'absence ', 'of ', 'bugs']  >>> functools.reduce( (lambda x,y:x+y), L)  'Testing shows the presence, not the absence of bugs'  >>>  We can get the same result by using join :  >>> ''.join(L)  'Testing shows the presence, not the absence of bugs'
  • 21.  We can also use operator to produce the same result:  >>> import functools, operator  >>> functools.reduce(operator.add, L)  'Testing shows the presence, not the absence of bugs'  >>>  The built-in reduce also allows an optional third argument placed before the items in the sequence to serve as a default result when the sequence is empty.