Spring Deals - hours only!Up to 70% off on all courses and bundles.-Close
Recap
Iterating over a list
4. Iterating over lists with enumerate()
Modifying lists
Working with multiple lists
Congratulations

Instruction

Great! Often when you iterate over a list, you'd like to have an access to both the index of the current element and the value of this element. Python has a useful function named enumerate() exactly for this purpose. Together with a for loop, enumerate() allows you to access both the index and the value while iterating. Look at the example:

sleep_durations = [368, 690, 426, 494, 445, 690, 423, 534, 606, 390]
sleep_durations_sum = 0
sleep_durations_count = 0
for i, duration in enumerate(sleep_durations):
  if 0 <= i % 7 <= 4:
    sleep_durations_count += 1
    sleep_durations_sum += duration
avg_sleep_duration = sleep_durations_sum / sleep_durations_count
print(avg_sleep_duration)

Mark started tracking his sleep duration on Monday. The code above computes Mark's average sleep duration on weekdays (Monday through Friday). The function enumerate(sleep_duration) for each element in the list sleep_duration returns an index (we store it in the variable i) and the value (we use the duration variable).

Inside the for loop, we check if the current day is a weekday. Weekdays are stored in the list under indexes 0 to 4 (Monday to Friday in the first week), 7 to 11 (Monday to Friday in the second week), etc. The weekday indexes are between 0 and 4 modulo 7. This is what the condition 0 <= i % 7 <= 4 checks. Note that Python allows you to use the concise mathematical syntax a < b < c. In many other programming languages, you have to write the same condition as 0 <= i % 7 and i % 7 <= 4.

Exercise

Martha is interested in knowing her average expenses in each half of the year. Compute her average expenses for the first half of the year (January to June) and for the second half of the year (July to December). Display the information as follows:

Average expense Jan-June: {1st half year average}
Average expense July-Dec: {2nd half year average}

Use a monthly_spendings list that stores the expenses in the appropriate months.