Mijn vraag
Ik ben grandioos de mist aan het ingaan met geneste lijsten en als beginner kom ik er niet uit.
Wat ik zou moeten bekomen is het gemiddelde van het j-de element uit de sublijsten (die niet even lang moeten zijn.
listAvgs([[1,2,3],[4,5],[6,7,8,9],[10]]) zou dan het resultaat van [(1+4+6+10)/4, (2+5+7)/3, (3+8)/2, 9/1] moeten geven, of [5.25,4.67,5.5,9.0]
Ik zit me echter blind te staren op wat ik heb en kan er maar niet doorheen kijken. Mijn opzet was:
1) sla de lengtes van elke rij op in lijst
2) vul vervolgens elke kolom aan met 0 waar niks staat (neutraal element kan dan mee in som)
3) nu kan je de som nemen over elke rij en dit opslaan in een lijst
4) loop over som en lengtes om tot je gemiddelden te komen
So far, so good... ware het niet dat ik op 1 vastloop. De lengte van de kolommen is niet complex, ik zie echter niet hoe je die van de rijen kan bekomen.
Transpose zou een noodoplossing zijn, ware het niet dat numpy in de hele cursus niet aan bod komt en dit dus zeker niet de bedoeling is. Dit is overigens geen taak. Ik probeer me door wat oefeningen te worstelen voor een aankomend examen.
...
Relevante software en hardware die ik gebruik:
Python 3.10.5 in Wing
...
Wat ik al gevonden of geprobeerd heb:
...
Ik ben grandioos de mist aan het ingaan met geneste lijsten en als beginner kom ik er niet uit.
Wat ik zou moeten bekomen is het gemiddelde van het j-de element uit de sublijsten (die niet even lang moeten zijn.
listAvgs([[1,2,3],[4,5],[6,7,8,9],[10]]) zou dan het resultaat van [(1+4+6+10)/4, (2+5+7)/3, (3+8)/2, 9/1] moeten geven, of [5.25,4.67,5.5,9.0]
Ik zit me echter blind te staren op wat ik heb en kan er maar niet doorheen kijken. Mijn opzet was:
1) sla de lengtes van elke rij op in lijst
2) vul vervolgens elke kolom aan met 0 waar niks staat (neutraal element kan dan mee in som)
3) nu kan je de som nemen over elke rij en dit opslaan in een lijst
4) loop over som en lengtes om tot je gemiddelden te komen
So far, so good... ware het niet dat ik op 1 vastloop. De lengte van de kolommen is niet complex, ik zie echter niet hoe je die van de rijen kan bekomen.
Transpose zou een noodoplossing zijn, ware het niet dat numpy in de hele cursus niet aan bod komt en dit dus zeker niet de bedoeling is. Dit is overigens geen taak. Ik probeer me door wat oefeningen te worstelen voor een aankomend examen.
...
Relevante software en hardware die ik gebruik:
Python 3.10.5 in Wing
...
Wat ik al gevonden of geprobeerd heb:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| def listAvgs(lst): longest = longestSublist(lst) #deze functie geeft de lengte van de langste sublijst weer lengths = [] sums = [] total = 0 #selecteer lengte voor alle RIJEN (nu dus kolommen) for row in lst: lengths.append(len(row)) #Wanneer rijen niet zo lang zijn als langste sublijst -> vul aan met neutraal element voor som for i in range(0,len(lst)): while len(lst[i])<longest: lst[i].append(0) #Neem som van i-de element in rij for i in range(0,len(lst)): for j in range(0,longest): total += lst[j][i] sums.append(total) total = 0 print('sums: ', sums) print('lengths: ', lengths) for i in range(0,len(lengths)): sums[i] = sums[i]/lengths[i] return sums print(listAvgs([[1,2,3],[4,5],[6,7,8,9],[10]])) |
...