[9, 8, 7, 8]
We’ve worked with lists of integers, list of strings, and lists of floats – but we can also have lists of lists:
for
loops with lists of listsflatten
numbers
.append()
get_highest_average
lists
, which is a 2D list of numbers (floats or integers)An illustration:
flowchart LR A["[[ ], <br> [2, 3, 7], <br> [15, 21, 3, 24], <br> [6, 4] ]"] --> B("len([]) > 0 ?") A --> SS("len([2, 3, 7]) > 0 ?") --> K["[2, 3, 7]"] A --> SSS("len([15, 2, 3, 8]) > 0 ?") --> S["[15, 2, 3, 8]"] A --> SSSS("len([6, 4]) > 0 ?") --> F["[6, 4]"] K -->id1[calculate mean: 4] S --> id2[calculate mean: 7] F --> id3[calculate mean: 5] id1 --> E["[4, 7, 5]"] id2 --> E id3 --> E L("len([4, 7, 5]) > 0 ?") --> id4[calculate highest mean: 7] style id1 fill:#ffd5f1,stroke:#333,stroke-width:2px style id2 fill:#ffd5f1,stroke:#333,stroke-width:2px style id3 fill:#ffd5f1,stroke:#333,stroke-width:2px style id4 fill:#feffad,stroke:#333,stroke-width:2px
def get_highest_average(numbers):
means = []
for i in range(len(numbers)):
if len(numbers[i]) > 0:
total_sublist = 0
for j in range(len(numbers[i])):
total_sublist += numbers[i][j]
mean_sublist = total_sublist / len(numbers[i])
means.append(mean_sublist)
if len(means) > 0:
highest_mean = means[0]
for i in range(len(means)):
if means[i] > highest_mean:
highest_mean = means[i]
return highest_mean
def main():
assert get_highest_average([[1, 1, 1], [2, 2]]) == 2
assert get_highest_average([[1, 1, 1], []]) == 1
assert get_highest_average([[], []]) == None
assert get_highest_average([]) == None
weeks = [ [100, 100, 105, 105, 102, 102, 100],
[70, 71, 75, 72, 81, 80, 74],
[78, 72, 74, 71, 70, 70, 70],
[30, 32, 40, 38, 31, 32, 30] ]
average = get_highest_average(weeks)
assert average == 102
main()
def get_highest_average(number_lists):
max_average = None
for i in range(len(number_lists)):
if len(number_lists[i]) > 0:
total_sublist = 0
for j in range(len(number_lists[i])):
total_sublist += number_lists[i][j]
average = total_sublist/len(number_lists[i])
if max_average == None or average > max_average:
max_average = average
return max_average
def main():
assert get_highest_average([[1, 1, 1], [2, 2]]) == 2
assert get_highest_average([[1, 1, 1], []]) == 1
assert get_highest_average([[], []]) == None
assert get_highest_average([]) == None
weeks = [ [100, 100, 105, 105, 102, 102, 100],
[70, 71, 75, 72, 81, 80, 74],
[78, 72, 74, 71, 70, 70, 70],
[30, 32, 40, 38, 31, 32, 30] ]
average = get_highest_average(weeks)
assert average == 102
main()
Name your solution two_d_highest_average.py
and submit it to gradescope