Summing a 2D array in Python using the map () function



Examples:

 Input: arr = [[1, 2, 3], [4, 5, 6], [2, 1, 2]] Output: Sum = 26 

This problem can be easily solved using two for loops iterating over the entire matrix, but we can quickly solve this problem in python using the map () function.

# A function to calculate the sum of all elements in a matrix
# sum (arr) is a built-in Python function that calculates
# the sum of each item in the iterable (array, list, etc.).
# map (sum, arr) applies the given function to each item
# iterable and returns a list of results.

def findSum (arr):

 

# internal map function applies inline function

# sum on each line arr matrices and returns

# list of sum of elements of each row

return sum ( map ( sum , arr)) 

  
# Driver function

if __ name__ = = " __ main__ " :

  arr =   [[ 1 , 2 , 3 ], [ 4 , 5 , 6 ], [ 2 , 1 , 2 ]]

print "Sum =" , findSum (arr)

Output:

 26 

What does map () do?
The map () function applies the given function to each element of the iterable (list , tuple, etc.) and returns a list of results. For example, see the example below:

# Python code to demonstrate how map () works

 
# Function for calculating the square of any number

def calculateSquare (n):

return n * n

 
# numbers is a list of elements

numbers = [ 1 , 2 , 3 , 4 ]

 
# Here the map function displays
Function # for each item in the list of numbers.
# It`s like skipping each element of numbers
# listing one by one into the calcSquare function
# and save the result in another list

result = map (calculateSquare, numbers)

 
# the resulting output will be [1,4,9,16]

print result

Output:

 [1 , 4, 9, 16] 

This article courtesy of Shashankom Mishra (Gullu) . If you are as Python.Engineering and would like to contribute, you can also write an article using contribute.python.engineering or by posting an article contribute @ python.engineering. See my article appearing on the Python.Engineering homepage and help other geeks.

Please post comments if you find anything wrong or if you`d like to share more information on the topic discussed above.