PYTHON

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 🙂