Μετάβαση στο κύριο περιεχόμενο
Βασικά στοιχεία Python2026-07-29 · 8 λεπτά ανάγνωσης

Επεξήγηση των κατανοήσεων της λίστας Python: Πότε να τις χρησιμοποιείτε και πότε όχι (2026)

Οι κατανοήσεις λιστών είναι ένα από τα πιο παρεξηγημένα χαρακτηριστικά της Python. Οι αρχάριοι τα αποφεύγουν γιατί «φαίνονται περίπλοκα». Τα ενδιάμεσα τα χρησιμοποιούν υπερβολικά έως ότου κάθε τρίτη γραμμή είναι μια ένθετη γραμμή που κανείς δεν μπορεί να διαβάσει. Αυτό το σεμινάριο διορθώνει και τα δύο λάθη.

Θα καλύψουμε: το ακριβές σχήμα τριών μερών που ακολουθεί κάθε κατανόηση λίστας, σημεία αναφοράς έναντι «για» / «χάρτης» / «φίλτρο», τα τέσσερα μοτίβα που πρέπει να αναγνωρίσετε όταν βλέπετε και έναν σκληρό κανόνα για το πότε πρέπει να σταματήσετε να χρησιμοποιείτε κατανοήσεις και να προσεγγίσετε έναν απλό βρόχο.

Το σχήμα: [ τι | πηγή | φίλτρο ]

Κάθε κατανόηση λίστας αποτελείται από τρία μέρη, με αυτή τη σειρά:

▶ PYTHONeditable · runs in your browser

Διαβάζοντάς το δυνατά: "δώστε μου "έκφραση" για κάθε "αντικείμενο" σε "επαναληπτικό", αλλά μόνο όταν η "συνθήκη" είναι αληθής."

Ξεκινήστε με τον ισοδύναμο βρόχο «for» και μετά συμπτύξτε τον:

▶ PYTHONeditable · runs in your browser

Ίδιο αποτέλεσμα — «[0, 4, 16, 36, 64]». Η κατανόηση είναι μία γραμμή, εκχωρεί τη λίστα μπροστά (χωρίς κλήσεις «append») και ο μεταγλωττιστής bytecode της Python εκπέμπει «LIST_APPEND» — μια γρήγορη διαδρομή που παρακάμπτει την αναζήτηση χαρακτηριστικών στο «.append».

Σημείο αναφοράς: κατανόηση vs for-loop έναντι χάρτη+φίλτρο

Δημιουργία λίστας τετράγωνων ζυγών αριθμών από το 0 έως το 100.000:

| Μέθοδος | Χρόνος (μs) | Σχετικός |

|---|---|---|

| "για" + ".προσάρτηση" | 4.800 | 1,9× γραμμή βάσης |

| list(map(..., filter(...))) | 3.200 | 1,3× γραμμή βάσης |

| Κατανόηση λίστας | 2.500 | 1,0× (γρηγορότερο) |

Μετρήθηκε σε Python 3.13, μεμονωμένη εκτέλεση 1000 επαναλήψεων. Οι κατανοήσεις κερδίζουν επειδή δεν υπάρχει κλήση συνάρτησης ανά στοιχείο — η έκφραση είναι ενσωματωμένη.

Αυτό είπε: μην κάνετε μικροβελτιστοποίηση. Για μια λίστα 100 στοιχείων, και τα τρία συμπληρώνονται σε λιγότερο από 100 μs. Επιλέξτε πρώτα την αναγνωσιμότητα.

Τα τέσσερα μοτίβα που πρέπει να αναγνωρίσετε

1. Μεταμορφώστε κάθε στοιχείο

▶ PYTHONeditable · runs in your browser

Αναπτυσσόμενη αντικατάσταση για το "map(str.title, names)" αλλά δεν χρειάζεται αναδίπλωση "list(...)".

2. Φιλτράρισμα χωρίς μετασχηματισμό

▶ PYTHONeditable · runs in your browser

Πιο καθαρό από το list(filter(lambda n: n > 0, numbers)). Δεν χρειάζεται «λάμδα».

3. Φιλτράρισμα ΚΑΙ μετασχηματισμός

▶ PYTHONeditable · runs in your browser

Αυτό είναι όπου οι κατανοήσεις ξεπερνούν τις εναλλακτικές λύσεις — δοκιμάστε να το γράψετε με «χάρτης» + «φίλτρο» και μετρήστε τις παρενθέσεις.

4. Ισοπεδώστε μια ένθετη λίστα

▶ PYTHONeditable · runs in your browser

Η σειρά έχει σημασία: «για τη σειρά στη μήτρα» διαβάζεται από αριστερά προς τα δεξιά όπως οι ισοδύναμοι ένθετοι βρόχοι «για». Αυτό είναι το μόνο μοτίβο όπου οι ένθετες κατανοήσεις παραμένουν ευανάγνωστες — οτιδήποτε βαθύτερο χρειάζεται βρόχο.

Πότε να ΣΤΑΜΑΤΗΣΕΤΕ τη χρήση κατανοήσεων

Τρεις σκληροί κανόνες, κατά σειρά σπουδαιότητας:

1. Τρεις ή περισσότερες ρήτρες «για» → χρησιμοποιήστε έναν βρόχο. Μια κατανόηση τριπλής ένθεσης είναι δυσανάγνωστη ακόμη και από το άτομο που την έγραψε πριν από 20 λεπτά.

▶ PYTHONeditable · runs in your browser

2. Παρενέργειες → χρησιμοποιήστε βρόχο. Οι κατανοήσεις προορίζονται για δημιουργία μιας λίστας. Εάν καλείτε μια συνάρτηση για τις παρενέργειές της (εγγραφή σε αρχείο, αποστολή αιτήματος), χρησιμοποιήστε έναν βρόχο. Το "[print(x) για x σε αντικείμενα]" είναι μια μυρωδιά κωδικού — δημιουργείτε μια πεταμένη λίστα με "Κανένα".

3. Η έκφραση είναι μεγαλύτερη από 60 χαρακτήρες → χωρίστε την. Εάν χρειάζεται να σκεφτείτε περισσότερα από 3 δευτερόλεπτα για να την αναλύσετε, χωρίστε την σε μια επώνυμη συνάρτηση ή έναν βρόχο.

Υπαγόρευση και ρύθμιση κατανοήσεων — ίδιο σχήμα

Ίδια σύνταξη, διαφορετικές αγκύλες:

▶ PYTHONeditable · runs in your browser

Οι κατανοήσεις Dict είναι ιδιαίτερα χρήσιμες για την αντιστροφή μιας αντιστοίχισης ({v: k για k, v σε d.items()}) ή για τη δημιουργία ενός πίνακα αναζήτησης από μια λίστα.

Εκφράσεις γεννήτριας — ο φιλικός προς τη μνήμη ξάδελφος

Ρίξτε τις αγκύλες, κρατήστε τις παρενθέσεις:

▶ PYTHONeditable · runs in your browser

Για «sum», «min», «max», «any», «all», «.join(...)» και άλλες συναρτήσεις που επαναλαμβάνονται μία φορά, προτιμήστε την έκφραση γεννήτριας — αποθηκεύει την κατανομή της ενδιάμεσης λίστας. Για οτιδήποτε χρειάζεται να δημιουργήσετε ευρετήριο ή να επαναλάβετε δύο φορές, χρησιμοποιήστε μια κατανόηση.

Εξάσκηση: τρεις ασκήσεις

Ξαναγράψτε το καθένα χρησιμοποιώντας μια κατανόηση λίστας. Οι λύσεις βρίσκονται στο τέλος.

1. Δεδομένων `λέξεων = ["γάτα", "ελέφαντας", "σκύλος", "ιπποπόταμος"]", λάβετε μια λίστα λέξεων μεγαλύτερους από 4 χαρακτήρες, όλες με κεφαλαία.

2. Δεδομένων `data = [{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]", εξάγετε μια λίστα με μόνο τα ονόματα.

3. Δεδομένων «ζευγών = [(1, 2), (3, 4), (5, 6)]», λάβετε μια λίστα με τα αθροίσματα κάθε ζεύγους.

Λύσεις:

▶ PYTHONeditable · runs in your browser

Οι κατανοήσεις λιστών είναι ένα χαρακτηριστικό γνώρισμα της Python — το να γνωρίζετε πότε πρέπει να προσεγγίσετε ένα (και πότε να το αφήσετε ως βρόχο «για») είναι ένας αξιόπιστος δείκτης ευφράδειας μεσαίου επιπέδου. Εξασκηθείτε γράφοντας ξανά υπάρχοντες βρόχους «for» + «.append» που βρίσκετε στον δικό σας κώδικα. Δεν πρέπει να γίνονται όλοι μια κατανόηση, αλλά αυτά που πρέπει να είναι προφανή μετά από μια εβδομάδα.

Επόμενο βήμα: δοκιμάστε 5 διαδραστικά μαθήματα για την κατανόηση λιστών με πραγματική Python να τρέχει στο πρόγραμμα περιήγησής σας και έναν μέντορα AI σε κάθε βήμα.

Είστε έτοιμοι να το δοκιμάσετε;

15 μαθήματα δωρεάν μετά από δωρεάν εγγραφή — χωρίς κάρτα. Δοκιμάστε την πλατφόρμα και μετά αποφασίστε.

Ξεκινήστε δωρεάν →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.