PYTHON ΜΑΘΗΜΑ 14 – Lists (Part 2)

 

Δωρεάν Μαθήματα Python

INTRODUCTION

Στο σημερινό δωρεάν μάθημα Python, θα δούμε στην πράξη τις πιο χρήσιμες ενσωματωμένες μεθόδους (built-in methods) των λιστών. Θα μάθουμε πώς αυτά τα εργαλεία μάς επιτρέπουν να τροποποιούμε και να διαχειριζόμαστε απευθείας τα δεδομένα που περιέχει μια λίστα.

Συνθήκες (Conditionals) και Λίστες

Πριν προχωρήσουμε στις μεθόδους των λιστών και δούμε πώς αυτές μεταβάλλουν τα δεδομένα, ας κάνουμε μια χρήσιμη στάση. Θα δούμε πώς μπορούμε να χρησιμοποιήσουμε έναν βρόχο for (for loop) για να προσπελάσουμε τα στοιχεία μιας λίστας—είτε όλα μαζί, είτε μόνο όσα πληρούν μια συγκεκριμένη συνθήκη. Άλλωστε, η λογική του for loop μάς είναι ήδη αρκετά γνώριμη από προηγούμενο μάθημα!

app.py

teams = ['Arsenal', 'Chelsea', 'Aston Villa',
         'Newcastle', 'Everton', 'Liverpool', 'Watford']

for team in teams:
    print(team)

Output

Αποτέλεσμα εκτέλεσης κώδικα Python

Δημιουργούμε, λοιπόν, μια προσωρινή μεταβλητή μέσα στο for loop με το όνομα team. Σε κάθε "κύκλο" της επανάληψης, αυτή η μεταβλητή θα παίρνει διαδοχικά την τιμή κάθε στοιχείου της λίστας teams. Στο συγκεκριμένο παράδειγμα, η ενέργεια που θέλουμε να κάνουμε είναι απλή: να τυπώσουμε την εκάστοτε τιμή της μεταβλητής team. Προσοχή στη σύνταξη: αμέσως μετά τη λέξη in, δηλώνουμε τη λίστα από την οποία θα αντλήσει τα δεδομένα της η μεταβλητή μας.

Μπορούμε, επίσης, να συνδυάσουμε τις λίστες με δομές ελέγχου if. Έτσι, όχι μόνο ελέγχουμε τα δεδομένα που διαβάζουμε, αλλά μπορούμε να εμφανίσουμε και τα αντίστοιχα προσαρμοσμένα μηνύματα στο τερματικό (terminal). Στο παράδειγμα που ακολουθεί, θα δούμε δύο πολύ πρακτικά εργαλεία: χρησιμοποιούμε τον τελεστή in για να ελέγξουμε αν μια συγκεκριμένη τιμή υπάρχει ήδη μέσα στη λίστα, και το not in για να βεβαιωθούμε ότι μια τιμή δεν υπάρχει σε αυτήν.

app.py

teams = ['Arsenal', 'Chelsea', 'Aston Villa',
         'Newcastle', 'Everton', 'Liverpool', 'Watford']

if "Arsenal" in teams:
    print("This teams belongs to the Premier League")
if "Coventry" not in teams:
    print("This team belongs to the Championship League")

Output

Δωρεάν μαθήματα Python

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

app.py

teams = ['Arsenal', 'Chelsea', 'Aston Villa',
         'Newcastle', 'Everton', 'Liverpool', 'Watford']

if not teams:
    print("The list is empty of team")
else:
    print("The list contains teams")

Output

Δωρεάν Μαθήματα Python

Μέθοδοι Διαχείρισης Λιστών (List Methods)

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

len( )

Μια εξαιρετικά χρήσιμη συνάρτηση είναι η len(). (Μην ανησυχείτε για τη διαφορά ανάμεσα σε "συνάρτηση/function" και "μέθοδο/method" – θα την εξηγήσουμε αναλυτικά σε επόμενη ενότητα!). Η len() δέχεται μέσα στις παρενθέσεις της το όνομα μιας λίστας και μας επιστρέφει τον συνολικό αριθμό των στοιχείων της. Αν το αποτέλεσμα που πάρουμε είναι 0, αυτό σημαίνει πως η λίστα είναι άδεια. Πρόκειται, δηλαδή, για άλλον έναν πρακτικό τρόπο να ελέγξουμε γρήγορα αν μια λίστα περιέχει δεδομένα.

app.py

teams = ['Arsenal', 'Chelsea', 'Aston Villa',
         'Newcastle', 'Everton', 'Liverpool', 'Watford']

length = len(teams)
print(length)

Output

Δωρεάν Μαθήματα Python

💡 Ένα χρήσιμο tip: Είτε χρησιμοποιείτε τη len() είτε οποιαδήποτε άλλη συνάρτηση ή μέθοδο δούμε παρακάτω, το περιβάλλον που γράφετε κώδικα (το IDE σας) είναι εδώ για να σας βοηθήσει. Αν απλά αφήσετε τον δείκτη του ποντικιού (cursor) πάνω από τη λέξη μέσα στον κώδικά σας, θα εμφανιστεί αυτόματα ένα μικρό παραθυράκι με μια γρήγορη περιγραφή για το τι ακριβώς κάνει!

Δωρεάν μαθήματα Python

Η συνάρτηση len() αποδεικνύεται εξαιρετικά χρήσιμη και σε συνδυασμό με ένα for loop. Ειδικά σε περιπτώσεις που το μέγεθος μιας λίστας μεταβάλλεται ή δεν μας είναι γνωστό εκ των προτέρων, μπορούμε να χρησιμοποιήσουμε τη len() (συνήθως παρέα με τη συνάρτηση range()) για να διατρέξουμε τα στοιχεία της λίστας με βάση τη θέση τους (index) με απόλυτη ασφάλεια.

app.py

premier_league = ['Arsenal', 'Chelsea', 'Aston Villa',
                  'Newcastle', 'Everton', 'Liverpool', 'Watford']

for index in range(len(premier_league)):
    print(premier_league[index])

Output

Δωρεάν Μαθήματα Python

Προσθήκη Στοιχείων σε μια Λίστα

append( )

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

app.py

premier_league = ['Arsenal', 'Chelsea', 'Aston Villa',
                  'Newcastle', 'Everton', 'Liverpool', 'Watford']

premier_league.append("Manchester City")
print(premier_league)

Output

Δωρεάν Μαθήματα Python

insert( )

Ο δεύτερος τρόπος για να προσθέσουμε στοιχεία (elements) σε μια λίστα είναι η μέθοδος insert(). Η βασική της διαφορά από την append() είναι ότι η insert() δεν βάζει το στοιχείο αναγκαστικά στο τέλος, αλλά μας ζητάει να δηλώσουμε την ακριβή θέση (index) στην οποία θέλουμε να τοποθετηθεί. Το νέο στοιχείο θα πάρει ακριβώς το index που δηλώνουμε, και όλα τα υπόλοιπα δεδομένα απλώς θα "σπρωχτούν" μία θέση προς τα δεξιά για να του κάνουν χώρο.

app.py

premier_league = ['Arsenal', 'Chelsea', 'Aston Villa',
                  'Newcastle', 'Everton', 'Liverpool', 'Watford']

premier_league.insert(2, "Manchester City")
print(premier_league)

Output

Δωρεάν Μαθήματα Python

Αφαίρεση Στοιχείων από μια Λίστα

pop( )

Η μέθοδος pop() αναλαμβάνει να διαγράψει το τελευταίο στοιχείο (element) της λίστας μας. Ωστόσο, είναι αρκετά ευέλικτη: αν της δώσουμε έναν συγκεκριμένο δείκτη (index), θα αφαιρέσει το στοιχείο που βρίσκεται ακριβώς σε εκείνη τη θέση. Ένα πολύ ενδιαφέρον χαρακτηριστικό της pop() –το οποίο αναφέρεται και στην επίσημη τεκμηρίωση (documentation) της Python– είναι ότι, μόλις εκτελεστεί, μας επιστρέφει πίσω ως τιμή το στοιχείο που μόλις αφαίρεσε. Αυτό είναι εξαιρετικά χρήσιμο αν θέλουμε να γνωρίζουμε ποιο δεδομένο διαγράφηκε ή αν θέλουμε να το αποθηκεύσουμε κάπου αλλού!

app.py

premier_league = ['Arsenal', 'Chelsea', 'Aston Villa',
                  'Newcastle', 'Everton', 'Liverpool', 'Watford']

premier_league.pop()
print(premier_league)

premier_league.pop(1)
print(premier_league)

deleted_team = premier_league.pop()
print(f"You just removed {deleted_team} from the list")

Output

Δωρεάν Μαθήματα Python

index( )

Αν, πριν διαγράψουμε ένα στοιχείο, χρειάζεται πρώτα να μάθουμε σε ποια ακριβώς θέση (index) βρίσκεται μέσα στη λίστα, η Python μάς δίνει τη λύση με τη μέθοδο index(). Δίνοντάς της την τιμή που ψάχνουμε, η μέθοδος αυτή σαρώνει τη λίστα και μας επιστρέφει τον ακριβή αριθμό της θέσης της. Έτσι, μπορούμε να προχωρήσουμε στη διαγραφή (π.χ. με την pop()) με απόλυτη ακρίβεια.

app.py

premier_league = ['Arsenal', 'Chelsea', 'Aston Villa',
                  'Newcastle', 'Everton', 'Liverpool', 'Watford']

team_index = premier_league.index("Everton")
print(team_index)

Output

Δωρεάν Μαθήματα Python

remove( )

Η μέθοδος remove() μάς επιτρέπει να διαγράψουμε στοιχεία (elements) από μια λίστα με βάση την ίδια τους την τιμή, χωρίς να χρειάζεται να γνωρίζουμε τη θέση (index) στην οποία βρίσκονται. Στο δικό μας παράδειγμα με τις ομάδες, τα πράγματα είναι πολύ απλά: αρκεί να δώσουμε στην remove() το ακριβές όνομα της ομάδας που θέλουμε να αφαιρέσουμε, και εκείνη θα αναλάβει τα υπόλοιπα.

app.py

premier_league = ['Arsenal', 'Chelsea', 'Aston Villa',
                  'Newcastle', 'Everton', 'Liverpool', 'Watford']

premier_league.remove('Aston Villa')
print(premier_league)

Output

Δωρεάν Μαθήματα Python

Ταξινόμηση Λίστας

sorted( )

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

app.py

premier_league = ['Arsenal', 'Chelsea', 'Aston Villa',
                  'Newcastle', 'Everton', 'Liverpool', 'Watford']

sorted_teams = sorted(premier_league)
print(premier_league)
print(sorted_teams)

Output

Δωρεάν Μαθήματα Python

sort( )

Σε αντίθεση με τη συνάρτηση που μόλις είδαμε, η μέθοδος sort() κάνει μεν την ίδια ακριβώς δουλειά (ταξινομεί τα δεδομένα αλφαβητικά ή αριθμητικά), αλλά με μια τεράστια διαφορά: επηρεάζει μόνιμα την αρχική μας λίστα. Όταν χρησιμοποιήσετε την sort(), τα στοιχεία αναδιατάσσονται οριστικά στη νέα τους σειρά και η αρχική μορφή της λίστας χάνεται.

app.py

premier_league = ['Arsenal', 'Chelsea', 'Aston Villa',
                  'Newcastle', 'Everton', 'Liverpool', 'Watford']

premier_league.sort()
print(premier_league)

Output

Δωρεάν Μαθήματα Python

Γιατί να χρησιμοποιήσουμε while loops με τις Λίστες;

Όπως είδαμε, η μέθοδος remove() είναι εξαιρετικά βολική, αλλά έχει έναν βασικό περιορισμό: αν η ίδια τιμή υπάρχει δύο, τρεις ή περισσότερες φορές μέσα στη λίστα μας, η remove() θα διαγράψει μόνο την πρώτη που θα συναντήσει, αφήνοντας τις υπόλοιπες ανέπαφες. Για να καταφέρουμε να διαγράψουμε όλες τις επαναλήψεις μιας τιμής, τη λύση μάς δίνουν τα while loops, όπως φαίνεται και στο παράδειγμα που ακολουθεί.

app.py

premier_league = ['Arsenal', 'Chelsea', 'Chelsea', 'Aston Villa',
                  'Newcastle', 'Everton', 'Liverpool', 'Watford']

premier_league.remove('Chelsea')
print(premier_league)

Output

Δωρεάν Μαθήματα Python

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

app.py

premier_league = ['Arsenal', 'Chelsea', 'Chelsea', 'Aston Villa',
                  'Newcastle', 'Everton', 'Liverpool', 'Watford']

while "Chelsea" in premier_league:
    premier_league.remove("Chelsea")

print(premier_league)

Output

Δωρεάν Μαθήματα Python

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

reverse( )

Η πρώτη από αυτές τις λειτουργίες είναι η μέθοδος reverse(). Όπως μαρτυρά και το όνομά της, μας επιτρέπει να αναποδογυρίσουμε —ή πιο σωστά, να αντιστρέψουμε— πλήρως τη σειρά των στοιχείων μέσα στη λίστα μας. Το πρώτο στοιχείο πηγαίνει τελευταίο, το δεύτερο προτελευταίο, και ούτω καθεξής. Μια μικρή υπενθύμιση: Όπως και η sort(), έτσι και η reverse() εφαρμόζεται επιτόπου, αλλάζοντας μόνιμα την αρχική μας λίστα!

app.py

premier_league = ['Arsenal', 'Chelsea', 'Chelsea', 'Aston Villa',
                  'Newcastle', 'Everton', 'Liverpool', 'Watford']

premier_league.reverse()
print(premier_league)

Output

Δωρεάν Μαθήματα Python

clear( )

Η δεύτερη και τελευταία λειτουργία που θα δούμε σήμερα είναι η μέθοδος clear(). Η δουλειά της είναι ακριβώς αυτή που φαντάζεστε από το όνομά της: καθαρίζει εντελώς τη λίστα μας! Όταν την καλέσουμε, διαγράφει με μία μόνο κίνηση όλα τα στοιχεία (elements) που υπάρχουν μέσα, αφήνοντάς μας με μια εντελώς άδεια λίστα, έτοιμη να δεχτεί νέα δεδομένα.

app.py

premier_league = ['Arsenal', 'Chelsea', 'Chelsea', 'Aston Villa',
                  'Newcastle', 'Everton', 'Liverpool', 'Watford']

premier_league.clear()
print(premier_league)

Output

Δωρεάν Μαθήματα Python

del( )

Αντί να ψάχνουμε ένα στοιχείο (element) με βάση την τιμή ή το όνομά του για να το διαγράψουμε, μπορούμε να ακολουθήσουμε έναν άλλον δρόμο: την εντολή del. Η del δεν είναι ούτε method ούτε function, αλλά μια ενσωματωμένη λέξη-κλειδί της Python. Μας επιτρέπει να διαγράψουμε άμεσα οποιοδήποτε στοιχείο, αρκεί να της ορίσουμε την ακριβή θέση (index) στην οποία αυτό βρίσκεται μέσα στη λίστα μας.

app.py

premier_league = ['Arsenal', 'Chelsea', 'Chelsea', 'Aston Villa',
                  'Newcastle', 'Everton', 'Liverpool', 'Watford']

del premier_league[2]
print(premier_league)

Output

Δωρεάν Μαθήματα Python

Τέλος, μια εξίσου σημαντική και καθημερινή λειτουργία είναι η μετατροπή μιας λίστας σε ένα ενιαίο κείμενο (string). Στην Python, αυτό μπορεί να γίνει πανεύκολα! Συνήθως χρησιμοποιούμε τη μέθοδο join(), η οποία παίρνει όλα τα ξεχωριστά στοιχεία (elements) της λίστας μας και τα ενώνει σε μια όμορφη, συνεχόμενη πρόταση, επιτρέποντάς μας μάλιστα να διαλέξουμε πώς θα χωρίζονται (π.χ. με κόμμα ή με κενό).

app.py

premier_league = ['Arsenal', 'Chelsea', 'Chelsea', 'Aston Villa',
                  'Newcastle', 'Everton', 'Liverpool', 'Watford']

premier_league_string = ",".join(premier_league)
print(premier_league_string)

Output

Δωρεάν Μαθήματα Python

Αν βρήκατε αυτό το δωρεάν μάθημα χρήσιμο, σκεφτείτε να μας υποστηρίξετε με μια μικρή δωρεά (donation). Η βοήθειά σας είναι πολύτιμη, καθώς μας επιτρέπει να μεγαλώσουμε αυτό το site, να βελτιώσουμε τις δυνατότητες της online πλατφόρμας μας και να συνεχίσουμε να προσφέρουμε ποιοτικά μαθήματα προγραμματισμού, εντελώς δωρεάν για όλους.

full-width

Post a Comment

0 Comments