Οι δομές δεδομένων στην 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)
1. List (Λίστα) - Ταξινομημένη και Τροποποιήσιμη Συλλογή
Οι λίστες είναι η πιο συχνά χρησιμοποιούμενη δομή δεδομένων. Ορίζονται με τετράγωνες αγκύλες [], προσπελάζονται με δείκτες (ξεκινούν από 0) και είναι τροποποιήσιμες (mutable).
Ορισμός
Πρόσβαση και Τροποποίηση
Κοπή (Slicing)
Κοινές Μέθοδοι
List Comprehension (Σύντομος Τρόπος)
Ενσωματωμένες Λίστες (2D)
Πλεονεκτήματα: Ταξινομημένη, επιτρέπει επαναλαμβανόμενα στοιχεία, δυναμικό μέγεθος.
Μειονεκτήματα: Αργή αναζήτηση σε μεγάλα δεδομένα (O(n)).
2. Tuple (Πλειάδα) - Ταξινομημένη και Αμετάβλητη Συλλογή
Οι πλειάδες μοιάζουν με λίστες αλλά είναι αμετάβλητες (immutable). Ορίζονται με παρενθέσεις ().
Ορισμός
Πρόσβαση
Μοναδικό Στοιχείο Tuple (υποχρεωτικό κόμμα)
Αποσυσκευασία (Unpacking)
Μέθοδοι (Λίγες)
Πλεονεκτήματα: Πιο γρήγορο, hashable (μπορεί να χρησιμοποιηθεί ως κλειδί σε dictionary), εξασφαλίζει ακεραιότητα δεδομένων.
Χρήση: Σταθερά δεδομένα (ονόματα ημερών, συντεταγμένες από API).
3. Set (Σύνολο) - Αταξινόμητη και Μοναδική Συλλογή
Τα σύνολα ορίζονται με άγκιστρα {}, δεν επιτρέπουν επαναλαμβανόμενα στοιχεία, ο έλεγχος μέλους είναι πολύ γρήγορος.
Ορισμός
Προσθήκη/Διαγραφή
Πράξεις Συνόλων (Μαθηματικά)
Έλεγχος Μέλους (Πολύ Γρήγορος)
Πλεονεκτήματα: Μοναδικά δεδομένα (καθαρισμός λίστας email), O(1) έλεγχος μέλους.
Μειονεκτήματα: Αταξινόμητο, δεν υποστηρίζει δείκτες.
4. Dictionary (Λεξικό) - Ζεύγη Κλειδιού-Τιμής
Τα λεξικά ορίζονται με {key: value}, τα κλειδιά είναι μοναδικά και hashable.
Ορισμός
Πρόσβαση και Τροποποίηση
Κοινές Μέθοδοι
Ενσωματωμένα Λεξικά
Dict Comprehension
Πλεονεκτήματα: Γρήγορη πρόσβαση με κλειδί O(1), παρόμοιο με JSON.
Χρήση: Ρυθμίσεις, απαντήσεις API, παρόμοιο με βάση δεδομένων.
Σύγκριση Χαρακτηριστικών
Προχωρημένες Χρήσεις και Συμβουλές
Συμπέρασμα και Πρακτικές Συμβουλές
Οι δομές δεδομένων είναι η δύναμη της Python. Λάθος επιλογή επιβραδύνει τον κώδικα, σωστή τον κάνει επαγγελματικό. Για πρακτική:
Αναζητήσεις στο 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.

