## Problem Formulation and Solution Overview

To make it more interesting, we have the following running scenario:

*As a Python assignment, you have been given a List of Integers and asked to apply a function to each List element in various ways.*

## Preparation

import math

## Method 1: Use a Generator Expression

This example uses a Generator Expression. This expression performs any operations in memory first and returns an iterable object. An efficient option as upon completion, memory is cleared, and variables erased.

nums = [18, 43, 54, 65, 31, 21, 27] nums = (math.pow(num,2) for num in nums) print(nums)

The above code declares a List of Integers and saves it to the variable `nums`

.

Next, a Generator Expression is called and applies the `math.pow()`

function from Python’s built-in `math`

library to each list element. The results save back to `nums`

.

If output to the terminal at this point, an iterable Generator Object similar to the following displays.

`<generator object at 0x000002468D9B59A0>` |

To turn the Generator Object into a `List`

, run the following code.

print(list(nums))

The content of `nums `

is as follows.

[324.0, 1849.0, 2916.0, 4225.0, 961.0, 441.0, 729.0] |

**π‘Note**: The `math.pow()`

function accepts two (2) integers as arguments: `x`

(the value) and `y`

(the power), and returns the value of `x`

raised to the power of `y`

.

## Method 2: Use List Comprehension

This example uses List Comprehension to perform an operation on each List element.

nums = [18, 43, 54, 65, 31, 21, 27] nums = [math.sqrt(num) for num in nums] print(nums)

The above code declares a List of Integers and saves it to the variable `nums`

.

Next, List Comprehension is called and applies the `math.sqrt()`

function from Python’s built-in `math`

library to each List element. The results save back to `nums`

.

If output to the terminal, the following displays.

`[4.242640687119285, 6.557438524302, 7.3484692283495345, 8.06225774829855, 5.5677643628300215, 4.58257569495584, 5.196152422706632]` |

**π‘Note**: The `math.sqrt()`

function accepts an integer as an argument and returns the square root of said argument.

## Method 3: Use a Lambda and map()

This example uses Python’s `lambda`

function combined with `map()`

and List to apply a mathematical operation to each List element.

nums = [18, 43, 54, 65, 31, 21, 27] nums = list(map(lambda x: math.degrees(x), nums)) print(nums)

The above code declares a List of numbers and saves it to the variable `nums`

.

Next, List is called and passed an argument `map()`

, which in turn passes the `lambda`

function to apply the `math.degrees()`

function from Python’s built-in `math`

library to each `L`

i`st`

element. The result returns to `nums`

.

If output to the terminal, the following displays.

` [1031.324031235482, 2463.71851906254, 3093.9720937064453, 3724.225668350351, 1776.169164905552, 1203.2113697747288, 1546.9860468532227]` |

π‘`Note`

: The `math.degrees()`

function accepts an angle as an argument, converts this argument from radians to degrees and returns the result.

## Method 4: Use a For Loop

This example uses a `for`

Loop to apply a mathematical operation to each List element.

nums = [18, 43, 54, 65, 31, 21, 27] i = 0 while i < len(nums): nums[i] = round(math.sqrt(nums[i]), 2) i += 1 print(nums)

The above code declares a List of Integers and saves it to the variable `nums`

. Then, a counter variable, `i`

is declared, set to 0.

Next, a `while`

loop is instantiated and iterates through each List element, applying the `math.sqrt()`

function, and limiting the decimal places to two (2). The results save back to the appropriate element in `nums`

.

Upon completion of the iteration, the output is sent to the terminal.

` [4.24, 6.56, 7.35, 8.06, 5.57, 4.58, 5.2]` |

## Bonus: Calculate Commissions on each List Element

This bonus code extracts two (2) columns from a `real-estate.csv`

file, the street and price columns and converts each into a List.

Then, the street column is converted from **UPPERCASE** `uppercase()`

to **Title Case** by applying the `title()`

function. Next, Sales Commissions are calculated and applied to each price element using `round()`

.

import pandas as pd df = pd.read_csv('real-estate.csv', usecols=['street', 'price']).head(5) street = list(df['street']) street = [item.title() for item in street] prices = list(df['price']) commis = [round(p*.06,2) for p in prices] print(street) print(prices)

The output it as follows.

` ['3526 High St', '51 Omaha Ct', '2796 Branch St', '2805 Janette Way', '6001 Mcmahon Dr']` |

πFinxter Challenge!

Convert these Lists into a Dictionary format.

## Summary

This article has provided four (4) ways to apply a function to each `List`

element to select the best fit for your coding requirements.

Good Luck & Happy Coding!