PROGRAMOWANIE I ALGORYTMY

szkoła fraktal
Zapraszamy na lekcję otwartą wrzesień 2023

Python — tablice dwuwymiarowe


powrót

Wyobraź sobie, że musisz na maturze wczytać macierz dwuwymiarową, tzn. musisz wczytać n wierszy, a w każdym wierszu znajduje się po m liczb (lub innych elementów). Aby w języku Python przechować dane tego typu, możesz użyć listy, której elementy są także listy (tzw. zagnieżdżanie list). Na początek postaramy się wczytać i wypisać w tej samej postaci takie dane:

4 3
1 2 3
1 2 3
5 5 5
6 6 6

Pierwsze dwie liczby 4 i 3 mówią nam o rozmiarze macierzy, czyli w kolejnych 4 wierszach wystąpią po trzy liczby.

lista = [] # tu będziemy przechowywać macierz
liczby = input().split() # wczytujemy wiersz z danymi i rzutujemy je na listę

n = int(liczby[0]) # wyłuskujemy te dane i zamieniamy je na liczbę
m = int(liczby[1]) # w zasadzie ta zmienna jest niepotrzebna

for i in range(n):
   lista.append(input().split()) # wczytaj wiersz z danymi i rozdziel je jako oddzielne elementy

for i in range(n):
    print(" ".join(lista[i])) # wypisz kolejne wiersze z liczbami, wstawiając między nimi znak spacji

Odwoływanie się do poszczególnych elementów listy

Aby odwołać się do całego wiersza, wystarczy w nawiasie kwadratowym podać jego numer, pamiętając, że indeksujemy od zera:

lista = [] # tu będziemy przechowywać macierz

n = int(input("Podaj liczbę wierszy: "))

for i in range(n):
   lista.append(input("Wczytaj wiersz nr "+str(i)+": ").split()) # wczytaj wiersz z liczbami rozdziel je jako oddzielne elementy

i = int(input("Podaj numer wiersza, który chcesz wypisać: "))

print(lista[i]) # lub
print(" ".join(lista[i]))
Wejście/wyjście
Podaj liczbę wierszy: 3
Wczytaj wiersz nr 0: 1 2 3
Wczytaj wiersz nr 1: 11 22 33
Wczytaj wiersz nr 2: 111 222 333
Podaj numer wiersza, któy chcesz wypisać: 1
['11', '22', '33']
11 22 33

Aby odwołać się do poszczególnego elementu, należy podać w pierwszym nawiasie kwadratowym numer wiersza, a w drugim numer elementu w tym wierszu (elementy także numerujemy od zera):

lista = [] # tu będziemy przechowywać macierz

n = int(input("Podaj liczbę wierszy: "))

for i in range(n):
   lista.append(input("Wczytaj wiersz nr "+str(i)+": ").split()) # wczytaj wiersz z liczbami rozdziel je jako oddzielne elementy

i = int(input("Podaj numer wiersza: "))
j = int(input("Podaj numer elementu w tym wierszu: "))

print(lista[i][j])
Podaj liczbę wierszy: 3
Wczytaj wiersz nr 0: 1 2 3
Wczytaj wiersz nr 1: 4 5 6
Wczytaj wiersz nr 2: 7 8 9
Podaj numer wiersza: 2
Podaj numer elementu w tym wierszu: 2
9

Tablice wielowymiarowe

Tablicę trójwymiarową stworzysz, zagnieżdżając jeszcze bardziej listę. Opierając się na powyższym przykładzie, należy każdy element wiersza wczytać jako kolejną listę. Do takiego elementu odwołać można się za pomocą trzech nawiasów kwadratowych: lista[nr_wiersza][nr_kolumny][wysokość].