Λίστες (λίστα). Κατάλογος συναρτήσεων και μεθόδων

15.05.2022

Σήμερα θα μιλήσω για έναν τύπο δεδομένων όπως κονίστρα, λειτουργίες σε αυτές και μεθόδους, σχετικά με τους δημιουργούς λιστών και τη χρήση λιστών.

Τι είναι οι λίστες;

Οι λίστες στην Python είναι ταξινομημένες, μεταβλητές συλλογές αντικειμένων αυθαίρετων τύπων (όπως ένας πίνακας, αλλά οι τύποι μπορεί να διαφέρουν).

Για να χρησιμοποιήσετε λίστες, πρέπει να τις δημιουργήσετε. Υπάρχουν διάφοροι τρόποι για να δημιουργήσετε μια λίστα. Για παράδειγμα, μπορείτε να επεξεργαστείτε οποιοδήποτε επαναλαμβανόμενο αντικείμενο (για παράδειγμα, ) με την ενσωματωμένη συνάρτηση λίστα:

>>> λίστα ("λίστα") ["λίστα"]

Μπορείτε επίσης να δημιουργήσετε μια λίστα χρησιμοποιώντας ένα κυριολεκτικό:

>>> s = # Κενή λίστα >>> l = [ "s" , "p" , [ "isok" ], 2 ] >>> s >>> l ["s", "p", ["isok" "], 2]

Όπως μπορείτε να δείτε από το παράδειγμα, η λίστα μπορεί να περιέχει οποιοδήποτε αριθμό αντικειμένων (συμπεριλαμβανομένων των ένθετων λιστών) ή να μην περιέχει τίποτα.

Και ένας άλλος τρόπος για να δημιουργήσετε μια λίστα είναι γεννήτριες καταλόγων. Μια γεννήτρια λίστας είναι ένας τρόπος για την κατασκευή μιας νέας λίστας εφαρμόζοντας μια έκφραση σε κάθε στοιχείο μιας ακολουθίας. Οι γεννήτριες λιστών μοιάζουν πολύ με έναν βρόχο.

>>> c = [ c * 3 για το c στη "λίστα" ] >>> c ["lll", "iii", "sss", "tttt"]

Ένας πιο περίπλοκος σχεδιασμός γεννήτριας λίστας είναι επίσης δυνατός:

>>> c = [ c * 3 για c στη "λίστα" αν c != "i" ] >>> c ["lll", "sss", "tttt"] >>> c = [ c + d για c in "list" if c != "i" for d in "spam" if d != "a" ] >>> c ["ls", "lp", "lm", "ss", "sp", "sm", "ts", "tp", "tm"]

Αλλά σε περίπλοκες περιπτώσεις, είναι καλύτερο να χρησιμοποιήσετε έναν κανονικό βρόχο for για τη δημιουργία λιστών.

Κατάλογος συναρτήσεων και μεθόδων

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

Πίνακας "Μέθοδοι λίστας"

ΜέθοδοςΤι κάνει
λίστα.προσάρτηση(x)Προσθέτει ένα στοιχείο στο τέλος της λίστας
λίστα.επεκτείνω(ΜΕΓΑΛΟ)Επεκτείνει τη λίστα προσθέτοντας όλα τα στοιχεία της λίστας L
λίστα.εισαγωγή(i, x)Εισάγει την τιμή x στο i-ο στοιχείο
λίστα.αφαίρεση(x)Καταργεί το πρώτο στοιχείο στη λίστα που έχει τιμή x. ValueError εάν δεν υπάρχει τέτοιο στοιχείο
λίστα.λαϊκός([εγώ])Αφαιρεί το i-ο στοιχείο και το επιστρέφει. Εάν δεν έχει καθοριστεί ευρετήριο, αφαιρείται το τελευταίο στοιχείο
λίστα.ευρετήριο(x, ])Επιστρέφει τη θέση του πρώτου στοιχείου με τιμή x (αναζήτηση από την αρχή μέχρι το τέλος)
λίστα.καταμέτρηση(x)Επιστρέφει τον αριθμό των στοιχείων με τιμή x
λίστα.ταξινόμηση() Ταξινομεί μια λίστα με βάση μια συνάρτηση
λίστα.αντίστροφα() Επεκτείνει τη λίστα
λίστα.αντίγραφο() Ρηχό αντίγραφο της λίστας
λίστα.καθαρός() Καθαρίζει τη λίστα

Θα πρέπει να σημειωθεί ότι οι μέθοδοι λίστας, σε αντίθεση με το , τροποποιούν την ίδια τη λίστα και επομένως το αποτέλεσμα της εκτέλεσης δεν χρειάζεται να εγγραφεί σε αυτήν τη μεταβλητή.

>>> l = [ 1 , 2 , 3 , 5 , 7 ] >>> l . sort() >>> l >>> l = l . sort() >>> print(l) Κανένα

Και τέλος, παραδείγματα εργασίας με λίστες:

>>> a = [ 66,25 , 333 , 333 , 1 , 1234,5 ] >>> εκτύπωση ( a . count ( 333 ), a . count ( 66,25 ), a . count ( "x" )) 2 1 0 >>> ένα. ένθετο (2 , - 1 ) >>> a . προσάρτημα (333 ) >>> α >>> α . ευρετήριο (333 ) 1 >>> α . αφαιρέστε (333 ) >>> α >>> α . reverse() >>>α >>> α . sort() >>> α [-1, 1, 66.25, 333, 333, 1234.5]

Περιστασιακά, για να αυξηθεί η παραγωγικότητα, οι λίστες αντικαθίστανται με πολύ λιγότερο ευέλικτες

Ας φανταστούμε μια κατάσταση - πρέπει να εξαγάγετε όλα τα στοιχεία μιας λίστας και να αντιστοιχίσετε καθένα από αυτά στη δική του συγκεκριμένη μεταβλητή. Για παράδειγμα, έχουμε μια λίστα που περιγράφει ένα άτομο και περιέχει τα ακόλουθα στοιχεία:

Person_data = ["John", "Smith", 23, "προγραμματιστής"]

Όνομα_χρήστη, επώνυμο_χρήστη, ηλικία_χρήστη, επάγγελμα_χρήστη = δεδομένα_ατόμου

Μετά από αυτό, μπορούμε να χρησιμοποιήσουμε κάθε μεταβλητή που δημιουργήθηκε ξεχωριστά.

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

Πώς να χρησιμοποιήσετε γεννήτριες στην Python.

Γεννήτριες λιστών στην Pythonονομάζονται κατασκευές μιας γραμμής που σας επιτρέπουν να δημιουργήσετε νέες λίστες.

Η σύνταξη για τους δημιουργούς λιστών είναι:

# η απλούστερη γεννήτρια new_list =

Ως αποτέλεσμα, η new_list θα περιέχει αριθμούς από το 0 έως το 9. Είναι σαφές ότι για να δημιουργήσετε μια τέτοια λίστα δεν χρειάζεται να χρησιμοποιήσετε μια γεννήτρια. Απλώς χρησιμοποιήστε τη συνάρτηση range().

# πιο περίπλοκο παράδειγμα λέξης = "γεια" new_list =

Τώρα το new_list θα μοιάζει με αυτό:

["Γειά σου"]

Μπορείτε επίσης να εισαγάγετε μια κατασκευή if σε γεννήτριες λιστών:

# Δημιουργήστε μια λίστα αριθμών που είναι πολλαπλάσια των τριών new_list =

Ως αποτέλεσμα παίρνουμε:

Τέλος, μπορείτε να χρησιμοποιήσετε πολλαπλές λίστες και μεταβλητές στη γεννήτρια:

# δημιουργία τράπουλας με χρήση λίστας # suits suits = "HDCS" # ranks ranks = "23456789TJQKA" # δημιουργία τράπουλας =

Παίρνουμε το εξής αποτέλεσμα:

Φανταστείτε πόσο χρόνο εξοικονομήσαμε γράφοντας μόνο μία γραμμή αντί για πολλούς βρόχους.

Πώς να εξαγάγετε στοιχεία από υπολίστες στην Python.

Επίσης, συχνά προκύπτει μια κατάσταση όταν είναι απαραίτητο να εξαχθούν στοιχεία από υπολίστες μιας λίστας.

Για παράδειγμα, έχουμε την ακόλουθη λίστα:

Εξωτερικό = [, , ]

Η εργασία είναι να δημιουργήσετε μια ξεχωριστή λίστα που να περιέχει όλα τα στοιχεία των υπολιστών αυτή τη λίστα. Μπορείτε να εκτελέσετε αυτήν την εργασία χρησιμοποιώντας την ίδια διάταξη δημιουργίας λίστας:

Νέα_λίστα =

Έτσι παίρνουμε μια λίστα με όλα τα στοιχεία:

Αυτό είναι όλο για σήμερα. Καλή τύχη στη μάθηση Πύθων!

| |

Οι κατανοήσεις λιστών σάς επιτρέπουν να δημιουργείτε γρήγορα μια λίστα με βάση τις υπάρχουσες λίστες. Χρησιμοποιώντας μια γεννήτρια, μπορείτε να δημιουργήσετε μια λίστα με βάση οποιονδήποτε επαναλαμβανόμενο τύπο δεδομένων (για παράδειγμα, συμβολοσειρές ή πλειάδες).

Ως αποτέλεσμα, ο βρόχος θα δημιουργήσει την ίδια λίστα:

["8", "h", "o", "s", "t"]

Εκφράσεις υπό όρους σε γεννήτριες λιστών

Οι γεννήτριες λιστών μπορούν να χρησιμοποιήσουν εκφράσεις υπό όρους για να τροποποιήσουν υπάρχουσες λίστες ή άλλους διαδοχικούς τύπους δεδομένων, με αποτέλεσμα μια νέα λίστα.

Ας δούμε μια γεννήτρια με μια δήλωση if:

fish_tuple = ("blowfish", "clownfish", "catfish", "χταπόδι")
fish_list =
print(fish_list)

Η λίστα χρησιμοποιεί την πλειάδα fish_tuple ως βάση για μια νέα λίστα fish_list.

Οι λέξεις-κλειδιά για και in χρησιμοποιούνται με τον ίδιο τρόπο όπως στο προηγούμενο μέγεθος. Επιπλέον, η γεννήτρια περιέχει μια εντολή if, η οποία την κάνει να εξαιρεί τη συμβολοσειρά «χταπόδι» από τη λίστα.

Ρωτήστε τα περιεχόμενα του fish_list και βεβαιωθείτε ότι περιέχει όλα τα στοιχεία fish_tuple εκτός από το 'octopus'.

["blowfish", "clownfish", "catfish"]

Όπως μπορείτε να δείτε, χρησιμοποιώντας μια έκφραση υπό όρους μπορείτε να εξαιρέσετε ένα συγκεκριμένο στοιχείο από τη νέα λίστα.

Τώρα ας δούμε ένα άλλο παράδειγμα που χρησιμοποιεί μαθηματικές πράξεις, αριθμούς και τη μέθοδο range().


εκτύπωση(αριθμός_λίστα)

Διαβάστε επίσης:

Η νέα λίστα_αριθμών θα περιέχει τις τετραγωνισμένες τιμές κάθε ζυγού στοιχείου στην περιοχή 0-9. Το αποτέλεσμα θα είναι μια λίστα όπως αυτή:

Ας δούμε αυτό το παράδειγμα βήμα προς βήμα. Αν αντί για x ** 2 για x χρησιμοποιήσουμε μόνο x για x, η λίστα θα μοιάζει με αυτό:

αριθμός_λίστα =
εκτύπωση(αριθμός_λίστα)

Μετά από αυτό, μια έκφραση υπό όρους προστέθηκε στη γεννήτρια:

αριθμός_λίστα =
εκτύπωση(αριθμός_λίστα)

Η δήλωση if εξάλειψε όλους τους περιττούς αριθμούς από τη λίστα.

Τώρα το μόνο που μένει είναι να προσθέσουμε έναν τελεστή που θα τετραγωνίζει όλα τα στοιχεία:

αριθμός_λίστα =
εκτύπωση(αριθμός_λίστα)

Τώρα κάθε στοιχείο της λίστας θα τετραγωνιστεί.

Μπορείτε επίσης να χρησιμοποιήσετε ένθετες εντολές if σε γεννήτριες:

αριθμός_λίστα =
εκτύπωση(αριθμός_λίστα)

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

Απλή γενιά

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

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

>>> δεδομένα = >>> εκτύπωση(δεδομένα)

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

>>> δεδομένα = >>> εκτύπωση(δεδομένα) ["p", "y", "t", "h", "o", "n"]

Ως αποτέλεσμα της εκτέλεσης αυτού του κώδικα, θα δημιουργηθεί μια λίστα χαρακτήρων που περιλάμβανε η αρχική συμβολοσειρά. Όπως και στην περίπτωση του προηγούμενου παραδείγματος, μπορείτε να εμφανίσετε το σύνολο δεδομένων που προκύπτει στην οθόνη χρησιμοποιώντας την ήδη γνωστή μέθοδο εκτύπωσης.

Γεννήτρια σε κατάσταση

Ένας από τους συνήθεις τρόπους δημιουργίας λιστών στην Python είναι με μια συνθήκη. Τα προηγούμενα παραδείγματα έδειξαν μια μάλλον ασήμαντη προσέγγιση για τη συμπλήρωση μιας λίστας χρησιμοποιώντας μια γεννήτρια. Δεδομένα κατασκευής γλώσσας Python σας επιτρέπουν να ορίσετε ορισμένες προϋποθέσεις για την εκτέλεση μιας τέτοιας λειτουργίας. Για παράδειγμα, υπάρχει μια εργασία να μετακινήσετε μόνο ζυγούς αριθμούς στη λίστα αριθμητικές τιμέςαπό την επιλογή εύρους που δημιουργήθηκε νωρίτερα.

>>> δεδομένα = >>> εκτύπωση(δεδομένα)

Η πρόταση if μπαίνει στο παιχνίδι, ακολουθούμενη από μια μικρή δήλωση που λέει ότι κάθε στοιχείο της ακολουθίας πρέπει να ικανοποιεί κάποια συνθήκη. Σε αυτήν την περίπτωση, είναι απαραίτητο να επιστρέψετε το 0 ως αποτέλεσμα του υπολογισμού του υπολοίπου μιας διαίρεσης ακέραιου αριθμού. Όπως μπορείτε να δείτε, οι αριθμοί που πέρασαν το τεστ συμπεριλήφθηκαν στη λίστα.

Γεννήτρια με κύκλο

Η Python σας επιτρέπει επίσης να δημιουργήσετε μια λίστα χρησιμοποιώντας πολλαπλούς βρόχους., τοποθετώντας τα σε αγκύλες αρχικοποίησης. Το παρακάτω παράδειγμα χρησιμοποιεί δύο για δομές που επαναλαμβάνονται εναλλάξ στις τιμές για τις μεταβλητές i και j. Το αριθμητικό εύρος για αυτά (από 0 έως 3), όπως και πριν, ορίζεται μέσω των μεθόδων εύρους.

>>> δεδομένα = >>> εκτύπωση(δεδομένα)

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η δημιουργία μιας λίστας δεδομένων που βασίζεται στον εναλλάξ πολλαπλασιασμό των μεταβλητών i και j. Χάρη στους βρόχους for, οι τιμές τους αυξάνονται βήμα προς βήμα. Αυτό δημιουργεί μια λίστα με εννέα στοιχεία.

Δημιουργία ένθετων λιστών

Μερικές φορές ένας προγραμματιστής χρειάζεται να χρησιμοποιήσει λίστες με περισσότερες από μία διαστάσεις. Για παράδειγμα, μπορεί να χρειαστούν πολυδιάστατα σύνολα δεδομένων κατά την εργασία με μαθηματικούς πίνακες. Μπορείτε επίσης να χρησιμοποιήσετε γεννήτριες για να το κάνετε αυτό στην Python, απλά βάζοντας έναν βρόχο για να δημιουργήσετε μια λίστα μέσα σε μια άλλη. Οι περιορισμοί εύρους για μια ένθετη λίστα θα είναι αγκύλες, όπως φαίνεται στο ακόλουθο παράδειγμα.

>>> δεδομένα = [ για j στην περιοχή (0, 3)] >>> εκτύπωση(δεδομένα) [, , ]

Αυτός ο κώδικας δείχνει πώς να δημιουργήσετε μια δισδιάστατη μήτρα 3x3 χρησιμοποιώντας τη δισδιάστατη δημιουργία λίστας της Python. Τα στοιχεία αυτής της αριθμητικής ακολουθίας ήταν οι ψηφιακές τιμές από τις μεθόδους εύρους, όπως στα προηγούμενα παραδείγματα. Οι μεταβλητές i και j αυξάνονται σταδιακά σε κύκλους κατά ένα και πολλαπλασιάζονται μεταξύ τους. Η λειτουργία εκτύπωσης χρησιμοποιείται για την οπτική εμφάνιση του συνόλου δεδομένων που δημιουργείται στην οθόνη του υπολογιστή.

Πολύ συχνά κατά τη δημιουργία μιας ένθετης λίστας Python, χρησιμοποιείται ένας πίνακας μηδενικών γεννήτριας. Για παράδειγμα, ας δημιουργήσουμε έναν πίνακα 3x2:

>>> δεδομένα = [ για y στο εύρος(3)] >>> εκτύπωση(δεδομένα) [, , ]

Γεννήτρια λίστας με λάμδα

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

Οι συναρτήσεις λάμδα χρησιμοποιούνται μερικές φορές στην Python σε μια γεννήτρια λίστας. Το ακόλουθο παράδειγμα θα δημιουργήσει μια νέα ακολουθία αριθμών που προκύπτει από τη μέθοδο εμβέλειας. Όπως και πριν, ένα στοιχείο αυτού του συνόλου αναπαρίσταται ως μεταβλητή i, στην οποία δίνονται σταδιακά νέες τιμές (από 0 έως 9) στο για βρόχο. Η συνάρτηση λάμδα παίρνει μια τιμή ως όρισμα, στη συνέχεια την πολλαπλασιάζει από μόνη της και την επιστρέφει πίσω στη γεννήτρια.

>>> δεδομένα = [(λάμδα i: i*i)(i) για i στην περιοχή (0, 10)] >>> εκτύπωση(δεδομένα)

Αυτό δημιουργεί μια λίστα, δεδομένα, που περιέχει τα αποτελέσματα του τετραγωνισμού των αριθμών από το 0 έως το 9. Ως συνήθως, η λειτουργία εκτύπωσης εκτυπώνει τις πληροφορίες στην οθόνη.

Χρήση itertools

Για την εκτέλεση προηγμένης δημιουργίας λιστών στην Python, χρησιμοποιείται μια βιβλιοθήκη plug-in που ονομάζεται itertools. Με τη βοήθειά του, μπορείτε να δημιουργήσετε σύνολα τιμών σύμφωνα με ορισμένους κανόνες. Για να ενεργοποιήσετε τις λειτουργίες αυτής της ενότητας, θα πρέπει να προσθέσετε την παρακάτω οδηγία στην αρχή του αρχείου προγράμματος.

Εισαγωγή itertools

Οι μέθοδοι που περιέχει αυτή η βιβλιοθήκη σάς επιτρέπουν να δημιουργείτε λίστες χρησιμοποιώντας βελτιωμένους βρόχους. Για παράδειγμα, με τη βοήθειά του μπορείτε εύκολα να δημιουργήσετε συνδυασμούς διαφορετικών τιμών, συμβολικών και αριθμητικών. Ο παρακάτω κώδικας είναι απλό παράδειγμαδημιουργία λίστας με κλήση στη λειτουργία επανάληψης.

>>> δεδομένα = >>> εκτύπωση(δεδομένα)

Όπως μπορείτε να δείτε από το αποτέλεσμα, η μέθοδος επιστρέφει μια ακολουθία πανομοιότυπων αντικειμένων (σε αυτήν την περίπτωση, τον αριθμό 1), που επαναλαμβάνεται 5 φορές.

Σύναψη

Προχωρημένος λειτουργικότητα, που αντιπροσωπεύεται στην Python από γεννήτριες λιστών, επιτρέπουν στον προγραμματιστή να αυξήσει την ταχύτητα και την αποτελεσματικότητα της επεξεργασίας δεδομένων. Ο εξεταζόμενος μηχανισμός περιλαμβάνει τη δημιουργία τόσο συνηθισμένων όσο και πολυδιάστατων λιστών με βάση ορισμένες συνθήκες, καθώς και τη χρήση βρόχων. Η γλώσσα έχει επίσης τη δυνατότητα να δημιουργεί χρησιμοποιώντας εκφράσεις λάμδα και χρησιμοποιώντας τη βιβλιοθήκη intertools.

Η Python υποστηρίζει μια έννοια που ονομάζεται "κατανοήσεις λίστας" ( γεννήτριες καταλόγων).

Αυτή η ιδέα σάς επιτρέπει να δημιουργείτε λίστες με πολύ φυσικό, εύκολο τρόπο, όπως κάνουν οι μαθηματικοί.

Ακολουθούν συνηθισμένοι τρόποι περιγραφής λιστών (ή συλλογών, ή πλειάδων ή διανυσμάτων) στα μαθηματικά:

S = (x 2: x in (0 ... 9))
V = (1,2,4,8, ..., 2 2)
M = (x | x στο S και x ζυγό)

Μπορεί να θυμάστε τέτοια πράγματα από το σχολείο. Στην Python, μπορείτε να γράψετε αυτές τις ίδιες εκφράσεις όπως θα έκανε ένας μαθηματικός, χωρίς να χρειάζεται να θυμάστε ειδική σύνταξη.

Πώς φαίνονται οι εκφράσεις μας στην Python:

>>> S = >>> V = >>> M = >>> >>> εκτύπωση S; εκτύπωση V; εκτύπωση Μ
Είμαι βέβαιος ότι θέλετε να δείτε ένα πιο περίπλοκο παράδειγμα. :) Παρακάτω θα παρουσιάσουμε έναν άλλο τρόπο εύρεσης πρώτων αριθμών. Αυτό που είναι ενδιαφέρον είναι ότι κατασκευάζουμε πρώτα μια λίστα με μη πρώτους αριθμούς, χρησιμοποιώντας την πρώτη γεννήτρια λίστας και μετά τη δεύτερη γεννήτρια λίστας για να πάρουμε το "αντίστροφο" της λίστας, που είναι οι πρώτοι αριθμοί.

>>> noprimes = >>> primes = >>> print primes Σημείωση: Μπορείτε να ενσωματώσετε γεννήτριες λιστών μεταξύ τους, έτσι στο παράδειγμά μας θα μπορούσατε να τα βγάλετε πέρα ​​με μία μόνο έκφραση (χωρίς να χρειάζεται να χρησιμοποιήσετε τη μεταβλητή "noprimes" για αποθήκευση ενδιάμεσα αποτελέσματα). Ωστόσο, η έκφρασή μας θα ήταν μεγάλη και λιγότερο ευανάγνωστη, κάτι που δεν συνιστάται. Φυσικά, η γεννήτρια λίστας μπορεί να χρησιμοποιηθεί για περισσότερα από αριθμούς. Οι λίστες μπορούν να περιέχουν στοιχεία οποιουδήποτε τύπου, συμπεριλαμβανομένων συμβολοσειρών, ενσωματωμένων λιστών και συναρτήσεων. Μπορείτε ακόμη και να ανακατέψετε διάφορα είδησε μια λίστα.

Στο παρακάτω παράδειγμα ασχολούμαστε με μια λίστα συμβολοσειρών και δημιουργούμε μια λίστα λιστών. Κάθε μία από τις ενσωματωμένες λίστες περιέχει δύο συμβολοσειρές και μία ακέραια τιμή.

>>> words = "The quick brown fox jumps over the lazy dog".split() >>> print words ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog"] >>> stuff = [ για w σε λέξεις] >>> για i in stuff: ... print i
["ΤΟ", "το", 3] ["ΓΡΗΓΟΡΟ", "γρήγορο", 5] ["ΚΑΦΕ", "καφέ", 5] ["ΑΛΕΠΟΥ", "αλεπού", 3] ["ΠΗΔΑ", " άλματα", 5] ["ΠΑΝΩ", "πάνω", 4] ["ΤΟ", "το", 3] ["Τεμπέλης", "τεμπέλης", 4] ["ΣΚΥΛΟΣ", "σκύλος", 3] > >> πράγματα = χάρτης(λάμδα w: , λέξεις) >>> για το i σε πράγματα: ... print i ["THE", "the", 3] ["QUICK", "quick", 5] ["BROWN " ", "καφέ", 5] ["ΑΛΕΠΟΥ", "αλεπού", 3] ["ΑΛΕΠΤΑ", "άλματα", 5] ["ΠΑΝΩ", "πάνω", 4] ["ΤΟ", "το" , 3] ["Τεμπέλης", "τεμπέλης", 4] ["ΣΚΥΛΟΣ", "σκύλος", 3]
Το παραπάνω παράδειγμα δείχνει ότι μπορείτε να εφαρμόσετε την εργασία μας με δύο τρόπους - πρώτα χρησιμοποιώντας μια δημιουργία λίστας και, στη συνέχεια, χρησιμοποιώντας τη map() και τη συνάρτηση λάμδα. Ωστόσο, υπάρχουν περιπτώσεις όπου δεν μπορείτε να χρησιμοποιήσετε τη map() και πρέπει να χρησιμοποιήσετε μια δημιουργία λίστας και το αντίστροφο. Εάν ισχύουν και οι δύο μέθοδοι, είναι συχνά καλύτερο να χρησιμοποιείτε μια δημιουργία λίστας επειδή είναι πιο αποτελεσματική και πιο ευανάγνωστη στις περισσότερες περιπτώσεις.

Δεν μπορείτε να χρησιμοποιήσετε γεννήτριες λιστών όταν η συνθήκη σύνθεσης είναι πολύ περίπλοκη για να εκφραστεί με προτάσεις "για" και "αν" ή όταν η συνθήκη αλλάζει δυναμικά ενώ εκτελείται το πρόγραμμα. Σε αυτήν την περίπτωση είναι προτιμότερο να χρησιμοποιήσετε map() και/ή filter() με κατάλληλη συνάρτηση. Φυσικά, μπορείτε να τα συνδυάσετε με μια δημιουργία λίστας.

Πρωτότυπο άρθρο: