Ψηφιακός κόσμος / λογισμικό και κωδικοποίηση
Εκμάθηση λογισμικού => Python => νμα ξεκίνησε π: Yunuh στις Μαρ 18, 2026, 01:23 ΜΜ
Οι δομές δεδομένων στην Python αποτελούν τα βασικά δομικά στοιχεία των προγραμμάτων σας. Χρησιμοποιούνται για την αποτελεσματική αποθήκευση, επεξεργασία και διαχείριση δεδομένων. Οι ενσωματωμένες δομές δεδομένων της Python, δηλαδή List, Tuple, Set και Dictionary, είναι απαραίτητες τόσο για αρχάριους όσο και για επαγγελματίες προγραμματιστές. Το 2026, αυτές οι δομές χρησιμοποιούνται εντατικά στην επιστήμη δεδομένων (Pandas, NumPy), στην ανάπτυξη web (Django, Flask) και σε έργα τεχνητής νοημοσύνης (ενσωμάτωση με tensors του PyTorch).Αναζητήσεις στο Google όπως "Python list", "Python dictionary", "Python tuple vs list", "Python set" είναι από τις πιο δημοφιλείς θεματικές Python στην Ελλάδα και παγκοσμίως. Η καλή κατανόηση αυτών των δομών βελτιώνει την απόδοση του κώδικα σας, μειώνει τα λάθη και διευκολύνει την εργασία με μεγάλα σύνολα δεδομένων.Γιατί Πρέπει να Μάθετε Δομές Δεδομένων; (Προοπτική 2026)- Ευελιξία: Χάρη στον δυναμικό τύπο της Python, οι δομές δεδομένων τροποποιούνται εύκολα.
- Απόδοση: Η σωστή επιλογή δομής (π.χ. Set για έλεγχο μέλους) μειώνει τον χρόνο εκτέλεσης από δευτερόλεπτα σε χιλιοστά του δευτερολέπτου.
- Πραγματική χρήση: Οι απαντήσεις API είναι σε μορφή JSON (παρόμοιο με dictionary), η ανάλυση δεδομένων ξεκινά με lists.
- Πλεονέκτημα καριέρας: Στις συνεντεύξεις εργασίας, ερωτήσεις για "Python data structures" είναι κλασικές.
1. List (Λίστα) - Ταξινομημένη και Τροποποιήσιμη ΣυλλογήΟι λίστες είναι η πιο συχνά χρησιμοποιούμενη δομή δεδομένων. Ορίζονται με τετράγωνες αγκύλες [], προσπελάζονται με δείκτες (ξεκινούν από 0) και είναι τροποποιήσιμες (mutable).Ορισμόςφρούτα = ["μήλο", "αχλάδι", "κεράσι", "μπανάνα"]
αριθμοί = [1, 5, 3, 8, 2]Πρόσβαση και Τροποποίησηprint(φρούτα[0]) # μήλο
φρούτα[1] = "πορτοκάλι" # τροποποίηση
print(φρούτα) # ['μήλο', 'πορτοκάλι', 'κεράσι', 'μπανάνα']Κοπή (Slicing)print(φρούτα[1:3]) # ['πορτοκάλι', 'κεράσι']
print(φρούτα[:2]) # πρώτα 2
print(φρούτα[-2:]) # τελευταία 2Κοινές Μέθοδοιφρούτα.append("σταφύλι") # προσθήκη στο τέλος
φρούτα.insert(2, "ακτινίδιο") # προσθήκη σε συγκεκριμένο δείκτη
φρούτα.remove("κεράσι") # διαγραφή τιμής
φρούτα.pop() # αφαίρεση και επιστροφή τελευταίου στοιχείου
φρούτα.sort() # ταξινόμηση (αλφαβητική/αριθμητική)
αριθμοί.sort(reverse=True) # αντίστροφη ταξινόμηση
print(len(φρούτα)) # μήκοςList Comprehension (Σύντομος Τρόπος)τετράγωνα = [x**2 for x in range(10) if x % 2 == 0]
print(τετράγωνα) # [0, 4, 16, 36, 64]Ενσωματωμένες Λίστες (2D)πίνακας = [[1, 2, 3], [4, 5, 6]]
print(πίνακας[1][2]) # 6Πλεονεκτήματα: Ταξινομημένη, επιτρέπει επαναλαμβανόμενα στοιχεία, δυναμικό μέγεθος.Μειονεκτήματα: Αργή αναζήτηση σε μεγάλα δεδομένα (O(n)).2. Tuple (Πλειάδα) - Ταξινομημένη και Αμετάβλητη ΣυλλογήΟι πλειάδες μοιάζουν με λίστες αλλά είναι αμετάβλητες (immutable). Ορίζονται με παρενθέσεις ().Ορισμόςχρώματα = ("κόκκινο", "πράσινο", "μπλε")
συντεταγμένες = (40.7128, -74.0060) # Συντεταγμένες NYCΠρόσβασηprint(χρώματα[1]) # πράσινο
# χρώματα[1] = "κίτρινο" # Σφάλμα! ΑμετάβλητοΜοναδικό Στοιχείο Tuple (υποχρεωτικό κόμμα)μοναδικό = (5,) # Διαφορετικά γίνεται int: (5)Αποσυσκευασία (Unpacking)x, y = συντεταγμένες
print(x, y)Μέθοδοι (Λίγες)print(χρώματα.count("πράσινο")) # Πόσα
print(χρώματα.index("μπλε")) # ΔείκτηςΠλεονεκτήματα: Πιο γρήγορο, hashable (μπορεί να χρησιμοποιηθεί ως κλειδί σε dictionary), εξασφαλίζει ακεραιότητα δεδομένων.Χρήση: Σταθερά δεδομένα (ονόματα ημερών, συντεταγμένες από API).3. Set (Σύνολο) - Αταξινόμητη και Μοναδική ΣυλλογήΤα σύνολα ορίζονται με άγκιστρα {}, δεν επιτρέπουν επαναλαμβανόμενα στοιχεία, ο έλεγχος μέλους είναι πολύ γρήγορος.Ορισμόςμοναδικά = {1, 2, 3, 3, 4} # Το 3 επαναλαμβάνεται, μένει μοναδικό
print(μοναδικά) # {1, 2, 3, 4}Προσθήκη/Διαγραφήφρούτα_σύνολο = {"μήλο", "αχλάδι"}
φρούτα_σύνολο.add("κεράσι")
φρούτα_σύνολο.add("μήλο") # Δεν προστίθεται ξανά
φρούτα_σύνολο.remove("αχλάδι") # Σφάλμα αν δεν υπάρχει
φρούτα_σύνολο.discard("σταφύλι") # Χωρίς σφάλμα αν δεν υπάρχειΠράξεις Συνόλων (Μαθηματικά)σύνολο1 = {1, 2, 3, 4}
σύνολο2 = {3, 4, 5, 6}
print(σύνολο1.union(σύνολο2)) # Ένωση: {1,2,3,4,5,6}
print(σύνολο1.intersection(σύνολο2)) # Τομή: {3,4}
print(σύνολο1.difference(σύνολο2)) # Διαφορά: {1,2}
print(σύνολο1.symmetric_difference(σύνολο2)) # Συμμετρική διαφοράΈλεγχος Μέλους (Πολύ Γρήγορος)print(3 in σύνολο1) # TrueΠλεονεκτήματα: Μοναδικά δεδομένα (καθαρισμός λίστας email), O(1) έλεγχος μέλους.Μειονεκτήματα: Αταξινόμητο, δεν υποστηρίζει δείκτες.4. Dictionary (Λεξικό) - Ζεύγη Κλειδιού-ΤιμήςΤα λεξικά ορίζονται με {key: value}, τα κλειδιά είναι μοναδικά και hashable.Ορισμόςάτομο = {
"όνομα": "Mehmet",
"ηλικία": 35,
"πόλη": "Αγκυρα",
"χόμπι": ["βιβλία", "αθλητισμός"]
}Πρόσβαση και Τροποποίησηprint(άτομο["όνομα"]) # Mehmet
άτομο["ηλικία"] = 36 # Ενημέρωση
άτομο["επάγγελμα"] = "μηχανικός" # Νέα προσθήκηΚοινές Μέθοδοιprint(άτομο.keys()) # Κλειδιά
print(άτομο.values()) # Τιμές
print(άτομο.items()) # Ζεύγη (key, value) ως tuples
print(άτομο.get("email", "Δεν υπάρχει")) # Με προεπιλεγμένη τιμή
del άτομο["πόλη"] # Διαγραφή
άτομο.pop("ηλικία") # Διαγραφή και επιστροφήΕνσωματωμένα Λεξικάεταιρεία = {
"υπάλληλος1": {"όνομα": "Ayşe", "μισθός": 10000},
"υπάλληλος2": {"όνομα": "Ali", "μισθός": 12000}
}
print(εταιρεία["υπάλληλος1"]["μισθός"])Dict Comprehensionτετράγωνα_λεξικό = {x: x**2 for x in range(5)}
print(τετράγωνα_λεξικό) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}Πλεονεκτήματα: Γρήγορη πρόσβαση με κλειδί O(1), παρόμοιο με JSON.Χρήση: Ρυθμίσεις, απαντήσεις API, παρόμοιο με βάση δεδομένων.Σύγκριση Χαρακτηριστικών- Ορισμός: List: [], Tuple: (), Set: {}, Dictionary: {key: value}
- Ταξινόμηση: List: Ναι, Tuple: Ναι, Set: Όχι, Dictionary: Όχι (από 3.7+ διατηρεί σειρά εισαγωγής)
- Τροποποιήσιμο: List: Ναι, Tuple: Όχι, Set: Ναι, Dictionary: Ναι
- Επαναλαμβανόμενα Στοιχεία: List: Ναι, Tuple: Ναι, Set: Όχι, Dictionary: Κλειδιά όχι
- Δείκτες: List: Ναι, Tuple: Ναι, Set: Όχι, Dictionary: Με κλειδί
- Απόδοση: List: Αργή αναζήτηση, Tuple: Γρήγορο, Set: Πολύ γρήγορος έλεγχος μέλους, Dictionary: Γρήγορη πρόσβαση με κλειδί
Προχωρημένες Χρήσεις και Συμβουλές- Μονάδα Collections: from collections import defaultdict, Counter, deque
from collections import Counter
μέτρηση = Counter("γεια")
print(μέτρηση) # Counter({'γ': 1, 'ε': 1, 'ι': 1, 'α': 1})- Απόδοση: Για μεγάλα δεδομένα, προτιμήστε Set/Dict.
- Αντιγραφή: Για αντιγραφή list/dict, χρησιμοποιήστε .copy() ή deepcopy (import copy), αλλιώς προκύπτει πρόβλημα αναφοράς.
Συμπέρασμα και Πρακτικές ΣυμβουλέςΟι δομές δεδομένων είναι η δύναμη της Python. Λάθος επιλογή επιβραδύνει τον κώδικα, σωστή τον κάνει επαγγελματικό. Για πρακτική:- Λύστε προβλήματα δομών δεδομένων σε LeetCode/HackerRank.
- Πραγματικό έργο: Καλάθι αγορών (dict), μετρητής μοναδικών λέξεων (set).
- Πηγές: Τεκμηρίωση Python (datastructures), βιβλίο Automate the Boring Stuff.
Με αυτόν τον οδηγό, θα κατανοήσετε πλήρως τις δομές δεδομένων. Για παραδείγματα έργων ή συγκεκριμένη δομή, αφήστε σχόλιο! Το 2026, οι δομές δεδομένων θα δώσουν μεγάλη ταχύτητα στα έργα Python σας.