Wpis z mikrobloga

#python #programowanie

a więc chcę sobie zdefiniować mapkę.

co jest:
a) lepsze pod względem wydajności
b) sensowniejsze pod kątem użytkowania

1) zdefiniować kilka tablic dwuwymiarowych i w nich odddzielnie trzymać informacje?
na przykład: heightmap i temperaturemap

2) zdefiniować jedną tablicę dwuwymiarową, a w kazdej z komórek słownik z różnymi informacjami
przykład: mapobject[0,0]['height'] itp

3) zdefiniować jedną tablicę dwuwymiarową, a w każdej z komórek obiekt klasy np Tile albo Field
przykład: map
object[0,0].height

bo kurde, jednak mam niezłe braki w wiedzy. czy opcja 1 zje więcej pamięci niż opcje 2 lub 3? czy czas w którym wyciągnę dane ze słownika będzie odczuwalnie różny od opcji 3 przy tak naprawdę tysiącach jak nie setkach tysięcy różnych pól na mapie? dzięki za wszelką pomoc i podpowiedź
  • 8
@mask0pat0l: ale co to za mapki? jak chcesz tworzyć coś z mapkami na setki/tysiące pól w każdą stronę, to zawsze najszybciej zadziala jakieś array liczb, ludzie też czasami łączą niektóre dane jak jest możliwość, binarnie, np wiesz że wysokość zmieści się w 2 bajtach, temperatura też, to można przechowywać obie wartości w jeden liczbie i tylko ładnie opakować w API, wszystko zależy jak duże to ma być i jak wydajne.
Bo
czy opcja 1 zje więcej pamięci niż opcje 2 lub 3?

nie, zje najmniej ze wszystkich trzech

czy czas w którym wyciągnę dane ze słownika będzie odczuwalnie różny od opcji 3 przy tak naprawdę tysiącach jak nie setkach tysięcy różnych pól na mapie?

nie wiem co dokładnie chcesz osiągnąć, ale - nie optymalizuj przedwcześnie

@mask0pat0l:
zdefiniować jedną tablicę dwuwymiarową […]

przykład: map_object[0,0].height


@mask0pat0l: ale to nie tak działa :P Nie ma czegoś takiego jak tablica dwuwymiarowa technicznie rzecz biorąc — a już na pewno nie takie coś jak napisałeś. Jest po prostu tablica w której elementy też będą tablicami (co końcowo robi tablicę dwuwymiarową).

Powinno być:

map_object[x][y].height