Μάθημα : ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ με PYTHON

Κωδικός : 1901051431

1901051431 - ΕΥΔΟΞΙΑ ΠΑΤΚΟΥ

Ενότητες μαθήματος

ΕΝΟΤΗΤΑ 10: ΛΙΣΤΕΣ

ΛΙΣΤΕΣ

 

Είδαμε ήδη τη χρήση των μεταβλητών και πόσο βοηθούν στον προγραμματισμό. 

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

1ο Παράδειγμα

Ας υποθέσουμε τώρα ότι με το τελος του τετραμηνου κάθε μαθητής παίρνει βαθμούς σε διάφορα μαθήματα. Οι βαθμοί μπορεί να είναι 17, 15, 19,   κλπ . Για να περασουν σε ένα πρόγραμμα  και να γίνει μαζική επεξεργασία  θα πρεπει να γραφούν ως εξης: grade1=17, grade2=15, grade3=19 κλπ

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

Η Python προσφέρει ένα εργαλείο, τις  λίστες,  για να παρακολουθείτε σχετικά «πράγματα» ή αξίες.

Χρησιμοποιώντας το προηγούμενο παράδειγμα παρακολούθησης των βαθμών ενός μαθητή, ας φτιάξουμε μια λίστα που ονομάζεται gradesκαι ας τη συμπληρώσουμε με κάθε έναν από τους βαθμούς:

Τυπώστε την λίστα με την εντολή print (grades)

 

 

2o Παράδειγμα

Έχουμε μια σειρά προϊόντων στα οποία θέλουμε να αυξήσουμε τις τιμές κατά 10%.

Αν το κάνουμε αυτό με τις απλές μεταβλητές τότε θα έπρεπε να έχουμε μια μεταβλητή για κάθε προϊόν και να γράψουμε τον ίδιο κώδικα τόσες φορές όσα είναι τα προϊόντα . Προφανώς αυτό δεν εξυπηρετεί.

Εδώ μας βοηθά πάρα πολύ είναι η λίστα, (που είναι μια σημαντική δομή δεδομένων στην python )

Για το παράδειγμα με τα προϊόντα η λίστα που θα το περιγράψει είναι ως εξής:

shoppinglist = [ "cheesse" , "Rice", " Milk", "Coffee", "Sugar", "Pasta"]

Εύκολα μπορεί κάποιος να διατρέξει κάποιος τα στοιχεία της: 

shoppinglist = [ "cheesse" , "Rice", " Milk", "Coffee", "Sugar", "Pasta"]

for element in shoppinglist

     print (element)

____________________________

Επίσης εύκολο είναι να δούμε αν κάποιο στοιχείο ανήκει στη λίστα ή όχι

shoppinglist = [ "cheesse" , "Rice", " Milk", "Coffee", "Sugar", "Pasta"]

element = input( 'Τι θα αγοράσεις σήμερα;')

if  element in shoppinglist :

     print(' Ναι, είναι στη λίστα')

else:

     print( ' Όχι δεν είναι στη λίστα, δεν το χρειάζεσαι')

 

 

Δοκιμάστε 

 

Επόμενα : Λίστες μπορούμε να έχουμε

α) με αριθμούς όπως είδαμε στο 1ο παράδειγμα 

  • grades = [ 17, 15, 19, 20, 17, 15]
  • numbers=[1,2,3]

β) με συμβολοσειρές όπως είδαμε στο 2ο παράδειγμα

  • shoppinglist = [ "cheesse" , "Rice", " Milk", "Coffe", "Sugar", "Pasta"]
  • names=["Μαρία", "Νίκος", "Παύλος", "Κωνσταντής"]
  • κλπ

γ) ή να είναι και άδειες λίστες

  • an_empty_list=[ ]

Δοκιμάστε στην κοσόλα και δικά σα παραδείγματα

 

  • Να κάνετε την παρακάτω άσκηση

 

3ο Παράδειγμα

Εχετε μάθει πως μπορείτε να δίνετε ένα όνομα ως τιμή σε μια μεταβλητή ή έναν αριθμό όπως

name = "Maria"

age = 13

Φανταστείτε ότι έχετε μια ομάδα 3 ατόμων και η καθηγήτριά  σας σας είπε ότι έπρεπε να γράψετε ένα πρόγραμμα για να αποθηκεύσετε όλες τις ηλικίες τους και να βρείτε τη μέση ηλικία τους. Ας υποθέσουμε ότι οι ηλικίες τους είναι 8, 13 και 25. Πώς θα το κάνατε;

Λοιπόν, μπορείτε να δοκιμάσετε κάτι σαν αυτό:

person1_age = 8
person2_age = 13
person3_age = 25

average_age = (person1_age+person2_age+person3_age)/3

print("average age is ", average_age)

 

Αυτό λειτουργεί, αλλά… Την επόμενη μέρα έρχεται η καθηγήτριά σας  και σας λέει ότι κάποιος άλλος έχει ενταχθεί και τώρα πρέπει να συμπεριλάβετε την ηλικία του (17) στο πρόγραμμά σας. Πως το κανετε?

Θα μπορούσε να είναι έτσι:

person1_age = 8
person2_age = 13
person3_age = 25
person4_age = 17 

average_age = (person1_age+person2_age+person3_age+person4_age)/4

print("average age is ", average_age)

 

 

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

Προσθέσατε μια γραμμή:  person4_age = 17 για να αποθηκεύσετε την ηλικία.

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

Την επόμενη μέρα έρχεται ένα άλλο άτομο, ηλικίας 11 ετών, και εσείς χρησιμοποιείτε τον ίδιο τρόπο αντιμετώπισης του προβλήματος. Καταλήγετε με αυτόν τον κώδικα:

person1_age = 8
person2_age = 13
person3_age = 25
person4_age = 17
person5_age = 11

average_age = (person1_age+person2_age+person3_age+person4_age+person5_age)/5

print("average age is ", average_age)

Ελπίζω ότι φοβάστε να φτάσουν άλλοι άνθρωποι – αλλά μπορεί να γίνει πολύ χειρότερο χωρίς περισσότερους ανθρώπους! Φανταστείτε   να σας ζητηθεί να γράψετε κώδικα για να εκτυπώσετε τις ηλικίες με σειρά από τη μικρότερη στη μεγαλύτερη. Ο μόνος τρόπος που μπορείτε να το κάνετε αυτό με αυτόν τον κώδικα είναι να ταξινομήσετε μόνοι σας τις ηλικίες και στη συνέχεια να εκτυπώσετε τις μεταβλητές με τη σωστή σειρά. Τι νόημα έχει να μάθεις Python αν πρέπει να κάνεις τους υπολογισμούς μόνος σου;

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

Μπορείτε να δημιουργήσετε μια λίστα τιμών βάζοντας κόμμα μεταξύ κάθε ζεύγους τιμών και περιβάλλοντας ολόκληρη την παρτίδα σε αγκύλες [ ] . Για παράδειγμα, ας πούμε ότι οι τιμές σας είναι 1 και 4, θα δημιουργήσετε μια λίστα όπως αυτή:

>>> [1, 4]
[1, 4]

Ανάμεσά τους υπάρχει κόμμα και περιβάλλονται από αγκύλες [ ]. Μπορείτε να προσθέσετε περισσότερες καταχωρήσεις στη λίστα προσθέτοντας ένα κόμμα και στη συνέχεια τη νέα καταχώρηση:

>>> [1, 4, 8]
[1, 4, 8]

Μια λίστα μπορεί να είναι κενή – δεν περιέχει τιμές. Μοιάζει με αυτό:

>>> []
[]

Μια λίστα με μία μόνο τιμή μοιάζει με αυτό (χωρίς κόμματα):

>>> [1]
[1]

Ονομάζετε μια λίστα με τον ίδιο τρόπο που ονομάζετε οποιαδήποτε άλλη μεταβλητή:

>>> a_list = [1, 2, 3, 4]

 

Ετσι για  τις ηλικίες που είχατε παραπάνω, μπορείτε να κάνετε μια λίστα όπως αυτή:

>>> ages = [8, 13, 25, 17, 11]
>>>

Στην Python οι λίστες μπορούν να ταξινομηθούν. Απλώς προσθέτετε το .sort( ) στο όνομα της λίστας και θα ταξινομηθεί. Σαν αυτό:

>>> ages.sort()
>>> ages
[8, 11, 13, 17, 25]

Η Python καλεί τον αριθμό των καταχωρήσεων σε μια λίστα με το μήκος της. Για να λάβετε αυτόν τον αριθμό, χρησιμοποιείτε τη εντολή  len(). Σαν αυτό:

>>> len(ages)
5

Αυτό λέει ότι η λίστα που ονομάζεται age έχει 5 καταχωρήσεις (μετρήστε τις μόνοι σας για να επιβεβαιώσετε ότι είναι σωστή).

Μπορείτε να προσθέσετε όλες τις εγγραφές σε μια λίστα χρησιμοποιώντας τη δυνατότητα sum( ).

>>> sum(ages)
74

Έτσι, μπορείτε να απλοποιήσετε το πρόγραμμα του μέσου όρου ηλικίας   ως εξής:

o, you can simplify your average age program above like this:

ages = [8, 13, 25, 17, 11]
print ("average age is ", sum(ages)/len(ages))

Φοβερο? Είναι σίγουρα πολύ πιο απλό. Ελέγξτε ότι λειτουργεί για οποιονδήποτε αριθμό ηλικιών προσθέτοντας και αφαιρώντας ηλικίες στη λίστα ηλικιών. Εάν η λίστα ηλικίας είναι κενή, θα σπάσετε τον κώδικα. Δοκιμάστε το και δείτε.

Μπορείτε επίσης να αντιμετωπίσετε την απαίτηση να τα βάλετε σε τάξη επίσης πολύ εύκολα:

ages = [8, 13, 25, 17, 11]
print ("average age is ", sum(ages)/len(ages))
ages.sort() 
print ("ages in order are: ", ages)

Δοκιμάστε μονοι σας στο trinket

 

Προσθήκη στοιχείου στο τέλος της λίστας

Θέλουμε στο τέλος της λίστας a να προσθέσουμε τον αριθμό 42. Γι' αυτό κάνουμε χρήση της εντολής append

a = ['a', 'b', 'c', 'd']

a.append(42)

a --> ['a', 'b', 'c', 'd', 42]

Πρόκληση:  Προσθέστε στο τέλος της ίδιας λίστας τον αριμό 50 και 100

Εισαγωγή στοιχείου σε συγκεκριμένο σημείο της λίστας

b = ['m', 'n', 'o', 'p', 'q', 'r']

b.insert(24, 2)    (θέλουμε να μπει το στοιχείο- αριθμος 2, στη θέση 24 της λίστας. Αν δεν υπάρχει τέτοια θέση μπαινει στο τέλος της λίστας)

b --> ['m', 'n', 24, 'o', 'p', 'q', 'r']  

b.insert(2, 20)    (θέλουμε το στοιχείο αριθμός 20 να μπει στη θέση 2. 

b --> ['m', 'n', 20, 'o', 'p', 'q', 'r', 2]

Πρόκληση: Να βάλετε το όνομά σας στη θέση 3 της λίστας

 

Συγκόλληση λιστών μεταξύ τους

Όταν προσθέτετε λίστες με ένα +, η Python "κολλάει" τις λίστες μεταξύ τους:

[4,5,6] + [1,2,3] --> [4,5,6,1,2,3] 

Πρόκληση : Δίνονται οι λίστες f και s

Να κάνετε την συγκόλληση f+s

f=['1 ΓΥΜΝΑΣΙΟ' , 'ΠΥΛΑΙΑΣ'']

s=['Γ', 'ΤΑΞΗ', 'ΤΜΗΜΑ', 'Γ1']

 

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

Επέκταση με extend

Πολλαπλασιασμός λίστας

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

 

[1,2] * 3 --> [1,2,1,2,1,2]

[7] * 7 --> [7,7,7,7,7,7,7]

['c'] * 4 --> ['c','c', 'c','c']

Πρόκληση Εστω η λίστα h=['hello', 'hi',  ' bye']

Πολλαπλασιάστε την επί 3

Εργασίες

Ξεκινήστε με τη λίστα li = [1, 2, 3, 4, 5]στην παρακάτω κονσόλα.

Χρησιμοποιήστε μία από τις  εντολές  που μάθατε  για τις λίστες για να το μετατρέψετε li = [1, 2, 3, 4, 5, "hi!"]

Στη συνέχεια, χρησιμοποιήστε μια διαφορετική εντολή για να μετατρέψετε τη λίστα σε li = [1, 2, 3, 4, 5, "hi!", "hello!", "yo!"]

Εργασίες

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

Καλύτερα όμως, να την κάνετε αφού μάθετε ακόμα μερικά πράγματα. Μετά την 12 ενότητα , επιστρέψτε πάτι εδώ.