Jak usprawnić swój projekt?

0

Witam wszystkich
Prosiłbym bardziej doświadczonych kolegów i koleżanki w wyrażeniu opinii dotyczącej mojego programu ,a dokładnie struktury danych.

Mój początkowy projekt programu dotyczy tematyki analizy meczów piłki nożnej.
Dane wejściowe pobieram z pliku excela.
Wybieram sobie jaką chce analizować ligę z listy ,którą mam w excelu jak i w excelu posiadam dane archiwalne jak i obecne do wybranej ligi.

Importuje je do programu i obrabiam ,aby wyodrębnić interesujące mnie dane:
Drużyna A i B jak i wynik.

Korzystając zmiennych usuwam duplikaty i tworzę listę zespołów reprezentujących daną ligę niech będzie przykładowo Anglia gdzie gra 20 zespołów.
Na podstawie mam 20 zmiennych gdzie każda reprezentuje nazwę drużyny.
W zmiennych :
"dr1" - nazwa zespołu ,a w kolejnych fazach programu dopisuje do tej listy dla danego zespołu sumy pkt ,goli ilość wygranych przegranych.
Dane z tej zmiennej są przetwarzane chociażby na tabele wg definicji funkcji na ranking.
"dr1gp" - przechowuje wszystkie bramki strzelone dla drużyny nr1 wg meczy rozegranych czy w tym sezonie czy wg wyboru łącznie np z 5 ostatnich sezonów.
"dr1gm" - gole stracone
"dr1pkt" -wg napisanej definicji funkcji przydzielam punkty
"dr1rywale"- wykaz rywali z jakimi dr1 rywalizowało w określonej liczbie meczów
"dr1handi" - marginesy jakimi mecze zakończyły się
te zmienne dotyczą tylko jednej drużyny i danych rozegranych razem.
Do tego mam dane zapisane w zmiennych dla meczów rozegranych w domu czy na wyjeździe.:
"dr1gpd"
"dr1gpw"
...itp jak wyżej
dla każdej drużyny potrzebuje utworzyć minimum 15-20 zmiennych do przechowywania danych jak i kolejnych obliczeń ,które są potrzebne do analizy.

Mnożąc te 15-20 razy ilość zespołów w lidze wychodzi już 300-500 zmiennych.
W takiej formie zapisane dane w listach są dość łatwe do przetwarzania i tworzenia różnych obliczeń,
Również nie ma problemu z wyjmowaniem danych interesujących mnie np jaki był wynik zespołu A 10 meczów temu co przy ułożeniu listy daje łatwy dostęp do niej,
Kolejne obliczenia dopisuje do zmiennej "dr1" dla drużyny pierwszej i wiem pod jakim indexem jaki wynik się kryje i czego dotyczy.
Moje definicje funkcji chociażby na wygenerowanie rankingu.

Moje pytanie brzmi w jaki sposób usprawnić przechowywanie i dostęp do danych ,aby nie korzystać z kilkuset czy nawet tysiąca zmiennych??
Czy duże programy operujące na danych wymagają bardzo wielu zmiennych czy jednak inaczej rozwiązuje się takie zagadnienia?

Jak potrzebuje obliczać jakiś obliczeń to do wywoływania definicji funkcji muszę podać dla 20 zespołów minim 20 zmiennych. Czy jest jakaś reguła czy skrót ,aby wywołać zmienne do definicji funkcji poprzez jakąś dynamikę?

Wiem ,że można rozpakować argumenty funkcji z listy ,ale to działa dla danych liczbowych jeśli funkcja ich potrzebuje ,ale zakładając ,że chce obliczać funkcją chociaż punkty dla każdej drużyny i przypisywać je do zmiennej dla każdej drużyny to potrzebuje już podać 20 zmiennych do zapisu dla każdej drużyny i nie wiem czy idę w dobrym kierunku czy jednak przebudować wszystko.

Nie krytykujcie mnie od razu ,że zrobiłem to czy tamto źle ,bo nie jestem zawodowym programistą ,a Pythona przerabiam niecały miesiąc tworząc swój pierwszy projekt cegiełka po cegiełce tylko nie wiem czy deklarowanie takiej liczby zmiennej nie jest zbytnio przeciążające i to deklarowanie wywołania definicji funkcji dla dużej liczby zmiennych jest ok.

Pozdrawiam i liczę na ciekawe podpowiedzi pomocne w rozwiązaniu tego problemu..

5

Myślę, że powinieneś się zainteresować słownikami albo obiektami(więc i klasami), bo zarówno słowniki jak i obiekty pozwalają na grupowanie zmiennych.

Ponadto - zwróć uwagę, że listy mogą być zagnieżdżone. Również możesz mieć w liście słowniki albo w słownikach listy (nie wiem, czy ci takie zagnieżdżanie będzie potrzebne, wskazuję tylko na możliwości, jakie masz w języku. Nie jesteś ograniczony do samych płaskich list). Podobnie w obiektach też możesz mieć listy i słowniki, a w listach i słownikach obiekty

Mnożąc te 15-20 razy ilość zespołów w lidze wychodzi już 300-500 zmiennych.

a nie możesz tego zamienić na listę, gdzie każdy element listy to jakiś tam słownik(albo obiekt) z danymi reprezentujący dany zespół?

W takiej formie zapisane dane w listach są dość łatwe do przetwarzania i tworzenia różnych obliczeń,

Też prawda, ale możesz to wykorzystać również do tego, żeby nie robić tylu zmiennych.

5

Nie ukrywam, że jakbym spotkał w projekcie zmienną o nazwe dr1gpw to bym się lewą nogą przez prawe ramię przeżegnał…

A ponadto, to LukeJL bardzo mądrze pisze — popatrz, jakie są struktury danych w Pythonie, popróbuj z nimi, i jak Ci już naprawdę żadna nie podejdzie, to wtedy możesz rozważyć zrobienie swoich własnych klas agregujących.

1 użytkowników online, w tym zalogowanych: 0, gości: 1