PYTHON Listy wielowymiarowe
Nazwisko | Test 1 | Test 2 | Test 3 |
---|---|---|---|
Kowalski | 90 | 86 | 93 |
Nowak | 76 | 64 | 78 |
Kwiatkowski | 82 | 82 | 87 |
Lista dwuwymiarowa
Listę dwuwymiarową możemy sobie wyobrazić jak tabelkę czy krzyżówkę. Do tej pory element listy był liczbą, literą, czy tekstem. Lista dwuwymiarowa to nic innego, jak lista, która w danym elemencie mieści kolejną listę.
I tak przechodzimy do tabelki widocznej na górze. Mamy do czynienia z listą, która w każdy swoim elemencie zawiera dane konkretnego ucznia i jego wyników (wiersz). Każdy jej element zawiera w takim razie listę, na którą składają się nazwisko i wyniki z 3 testów.
Przejdźmy do kodu:
wyniki = [['Kowalski', 90, 86, 93],['Nowak', 76, 64, 78],['Kwiatkowski', 82, 82, 87]] print(wyniki)
Efekt:
[['Kowalski', 90, 86, 93], ['Nowak', 76, 64, 78], ['Kwiatkowski', 82, 82, 87]]
Lista wyniki zawiera 3 elementy. Każdy z nich jest listą.
Aby wypisać pierwszy element:
print(wyniki[0])
Co da nam w rezultacie wypisanie całej pierwszej listy:
['Kowalski', 90, 86, 93]
Jeśli chcemy natomiast zagłębić się i wypisać nazwisko ucznia z pierwszej listy:
print(wyniki[0][0])
Efekt: Kowalski.
Odnosząc się zatem do listy zagnieżdżonej podajemy indeksy, kolejno: elementu listy nadrzędnej, następnie elementu listy podrzędnej.
Przejdźmy do wypisania całej zawartości listy:
wyniki = [['Kowalski', 90, 86, 93],['Nowak', 76, 64, 78],['Kwiatkowski', 82, 82, 87]] for uczniowie in wyniki : print(uczniowie)
W efekcie otrzymamy oczywiście 3 linie zawierające 3 listy z danymi uczniów i ich wynikami.
Spróbujmy wypisać każdy element osobno, jeden pod drugim:
for uczniowie in wyniki : for dane in uczniowie : print(dane)
Efekt:
Kowalski 90 86 93 Nowak 76 64 78 Kwiatkowski 82 82 87
Spróbujmy teraz policzyć średnią wyników każdego ucznia:
wyniki = [['Kowalski', 90, 86, 93],['Nowak', 76, 64, 78],['Kwiatkowski', 82, 82, 87]] for uczniowie in wyniki : suma = 0 for indeks_ocen in range(1, len(uczniowie)) : suma = suma + uczniowie[indeks_ocen] srednia = suma / 3 print(srednia)
Efekt:
89.66666666666667 72.66666666666667 83.66666666666667
Na koniec dodajmy jeszcze informację, kto uzyskał jaką średnią wyników z testu:
wyniki = [['Kowalski', 90, 86, 93],['Nowak', 76, 64, 78],['Kwiatkowski', 82, 82, 87]] for uczniowie in wyniki : suma = 0 for indeks_ocen in range(1, len(uczniowie)) : suma = suma + uczniowie[indeks_ocen] srednia = suma / 3 print('Uczeń',uczniowie[0],'uzyskał następującą średnią z testów:',srednia)
Efekt:
Uczeń Kowalski uzyskał następującą średnią z testów: 89.66666666666667 Uczeń Nowak uzyskał następującą średnią z testów: 72.66666666666667 Uczeń Kwiatkowski uzyskał następującą średnią z testów: 83.66666666666667
Sposobem wyświetlenia średniej się na razie nie przejmujemy. Formatowanie ciągów znaków już na jednej z najbliższych lekcji 🙂