ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Ακολουθίες: Λίστες και Πλειάδες Χειμερινό Εξάμηνο 2016

Σχετικά έγγραφα
ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Λίστες και Πλειάδες Χειµερινό Εξάµηνο 2014

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Λεξικά Χειμερινό Εξάμηνο 2016

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Λεξικά Χειµερινό Εξάµηνο 2014

Βασικά Στοιχεία Python 3

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Αλφαριθμητικά Χειμερινό Εξάμηνο 2016

Θέματα Προγραμματισμού Η/Υ

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Αναζήτηση και Ταξινόμηση Χειμερινό Εξάμηνο 2016

ακολουθία (sequence)

ΠΛΗΡΟΦΟΡΙΚΗ Ι (Python) Ενότητα 5. Λεξικά (Dictionaries)

Εισαγωγή στον Προγ/μό Υπολογιστών

Σημειωματάριο Τετάρτης 18 Οκτ. 2017

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Βασικές Ασκήσεις από τα Εργαστήρια της Python. Πέμπτη Εργ. 3 17:15 και 19:15

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Εισαγωγή στην Python Χειμερινό Εξάμηνο 2016

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Αναζήτηση και Ταξινόµηση Χειµερινό Εξάµηνο 2014

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Εισαγωγή στην Python Χειµερινό Εξάµηνο 2014

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στον Προγ/μό Υπολογιστών

ΠΛΗΡΟΦΟΡΙΚΗ Ι (Python) Ενότητα 4

Βασικά στοιχεία γλώσσας προγραμματισμού. Σπάχος Κυριάκος Καθηγητής Πληροφορικής ΠΕ19

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Λίστες. Lista=[ red, green, blue ] Το πλήθος των στοιχείων μια λίστας δίνεται από τη συνάρτηση len(): Len(Lista)

Εισαγωγή στην Γλώσσα Προγραμματισμού Python. 12/10/16 1

Πληροφορική ΙΙ Θεματική Ενότητα 10

Σημειωματάριο Δευτέρας 13 Νοε. 2017

ΜΥΥ105: Εισαγωγή στον Προγραµµατισµό. Επαναληπτικές Ασκήσεις Χειµερινό Εξάµηνο 2014

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

Γραφικά υπολογιστών Εργαστήριο 4 Εισαγωγή στις λίστες

Θέματα Προγραμματισμού Η/Υ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

Ευφυής Προγραμματισμός

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

Πληροφορική ΙΙ Θεματική Ενότητα 11

Εισαγωγή στον Προγραμματισμό

Σημειώσεις. Ο αριθμός των στοιχείων μίας λίστας μπορεί να βρεθεί με χρήση της συνάρτησης len:

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

Σημειώσεις. Ο αριθμός των στοιχείων μίας λίστας μπορεί να βρεθεί με χρήση της συνάρτησης len:

Γλωσσική Τεχνολογία. Object-Orientation in Python

Θέματα Προγραμματισμού Η/Υ

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Σφάλματα, εξαιρέσεις, εκσφαλμάτωση Χειμερινό Εξάμηνο 2016

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

Σημειωματάριο Τετάρτης 4 Οκτ. 2017

Εισαγωγή στον Προγραμματισμό Python Μάθημα 3: πίνακες και βρόγχος επανάληψης for (για) Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ.

Φύλλο Εργασίας 3. Μια γρήγορη επανάληψη από τα προηγούμενα

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Σημειωματάαριο Δευτέρας 16 Οκτ. 2017

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Λύσεις για τις ασκήσεις του lab5

Πληροφορική ΙΙ Θεματική Ενότητα 4

ΜΑΘΗΜΑΤΑ PYTHON. Καθηγητής Ι. Δημητρίου.

ΜΑΘΗΜΑΤΑ PYTHON. Καθηγητής Ι. Δημητρίου.

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

Δομές Δεδομένων και Αλγόριθμοι

Εισαγωγή στον Προγραμματισμό Python Μάθημα 3: πίνακες και βρόγχος επανάληψης for (για) Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ.

Εισαγωγή στον Προγραμματισμό Python Μάθημα 4: Συναρτήσεις (functions) και δομοστοιχεία (modules) στην Python

ΕΠΛ131 Αρχές Προγραμματισμού

ΚΕΦΑΛΑΙΟ 2. Τιμές, τύποι, μεταβλητές, λέξεις-κλειδιά, εντολές. 2.1 Εισαγωγή

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Εξαιρέσεις Εισαγωγή. Εξαιρέσεις. ηµήτρης Λεβεντέας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Οντοκεντρικός Προγραμματισμός

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

Κεφάλαιο 5: Δομές δεδομένων

Θέματα Προγραμματισμού Διαδικτύου ~ PHP ~

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort

Γλώσσες Προγραμματισμού Εφαρμογών - ΜΕΠΒ20

Σημειωματάριο Τετάρτης 11 Οκτ. 2017

ΚΕΦΑΛΑΙΟ 6. Συμβολοσειρές, λίστες, πλειάδες, λεξικά. 6.1 Εισαγωγή

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Επαναληπτικές Ασκήσεις Χειμερινό Εξάμηνο 2016

Διαχείριση Βάσης Δεδομένων (dbadmin)

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

Γλωσσική Τεχνολογία. Εισαγωγικό Φροντιστήριο

JAVASCRIPT 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Βασικά στοιχεία γλώσσας προγραμματισμού

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors

Γλώσσα προγραμματισμού python

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρότυπα Γεγονότων. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

Σημειωματάριο Δευτέρας 4 Δεκ. 2017

Transcript:

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό Ακολουθίες: Λίστες και Πλειάδες Χειμερινό Εξάμηνο 2016

Δομές δεδομένων Μια δομή δεδομένων είναι μια δομημένη (οργανωμένη) συλλογή στοιχείων (π.χ., ψηφίων, χαρακτήρων, αριθμών, αλφαριθμητικών, κλπ.). Η πιο βασική δομή στην Python είναι η ακολουθία. Κύριοι τύποι ακολουθιών: Λίστα (list) Πλειάδα (tuple) Αλφαριθμητικό (string) Βασική διαφορά μεταξύ λιστών και άλλων ακολουθιών είναι ότι οι λίστες μπορούν να μεταβληθούν 2

Χρήση ακολουθιών Η χρήση ακολουθιών στην Python είναι εκτενής Ορίζουμε και χρησιμοποιούμε ακολουθίες όταν θέλουμε να διαχειριστούμε συλλογές δεδομένων 3

Λίστες Μια λίστα ορίζεται σαν ακολουθία στοιχείων, χωρισμένα από κόμματα, εντός ενός [ και ενός ] Μια λίστα μπορεί να περιέχει στοιχεία διαφορετικών τύπων >>>digits=[0,1,2,3,4,5,6,7,8,9] >>>letters = [ A, B, C, D, E, F ] >>>hex = [0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F ] >>>lanisters = [ Tywin, Tyrion, Cercei, Jamie ] 4

Προσπέλαση στοιχείων Τα στοιχεία μιας λίστας μπορούν να προσπελαστούν κατ αντιστοιχία με την προσπέλαση χαρακτήρων σε ένα αλφαριθμητικό Το πρώτο στοιχείο στη θέση 0, το 2 ο στη θέση 1, κλπ. Επίσης: αρνητική δεικτοδότηση >>> digits[0] 0 >>> hex[-1] F 5

Άλλες λειτουργίες σε λίστες μήκος λίστας = αριθμός στοιχείων στη λίστα >>> len(digits) 10 >>> digits + [10,11,12,13,14,15] [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] συνένωση λιστών >>> digits + letters [0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F ] >>> A' in letters True επαλήθευση μέλους λίστας συνένωση λιστών με διαφορετικά στοιχεία 6

Άλλες λειτουργίες σε λίστες >>> 3*['A','B','C'] ['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C'] >>> lst = [23.99, 19.99, 34.50, 120.99] >>> min(lst) 19.99 >>> max(lst) 120.99 >>> sum(lst) 199.46999999999997 7

Άσκηση Δίνεται μια λίστα με λέξεις. Βρες τη μικρότερη και τη μεγαλύτερη λέξη (σε λεξικογραφική σειρά) >>> words = ['bat', 'ball', 'barn', 'basket', 'badmington'] >>> min(words) 'badmington' >>> max(words) 'bat' 8

Λίστες από λίστες Μια λίστα μπορεί να περιέχει στοιχεία άλλες λίστες Π.χ. χρήση λιστών για τη δημιουργία μιας βάσης δεδομένων με ονόματα και ηλικίες προσώπων: >>>edward=['edward Gumby', 42] >>>john=['john Smith', 50] λίστα από λίστες >>>database=[edward, john] >>>database [['Edward Gumby', 42], ['John Smith', 50]] 9

Άλλες λειτουργίες σε λίστες >>> len(database) 2 μήκος λίστας = αριθμός στοιχείων στη λίστα = αριθμός από λίστες συνένωση λιστών με διαφορετικά στοιχεία >>> john + database ['John Smith', 50, ['Edward Gumby', 42], ['John Smith', 50]] >>> 'John Smith' in john True επαλήθευση μέλους λίστας >>> 'John Smith' in database γιατί;; False τα μέλη της database είναι ['Edward Gumby', 42] και ['John Smith', 50] 10

Άσκηση Δημιουργήστε τον μοναδιαίο 3x3 πίνακα >>> I = [[1,0,0],[0,1,0],[0,0,1]] >>> I [[1, 0, 0], [0, 1, 0], [0, 0, 1]] Πως θα διαβάσουμε το στοιχείο στην πρώτη γραμμή και δεύτερη στήλη? >>> I[0][1] 0 Μας δίνει το δεύτερο στοιχείο της λίστας Μας δίνει την λίστα στην πρώτη γραμμή

Κατάτμηση λιστών Κατάτμηση (slicing): Ένα τμήμα μιας λίστας ορίζεται με ένα διάστημα θέσεων [x:y] σε αυτή Το x είναι η θέση του πρώτου στοιχείου και το y η επομένη της θέσης του τελευταίου που θέλουμε >>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] >>> letters[3:6] ['d', 'e', 'f'] >>> letters[-3:-1] ['h', 'i'] >>> letters[3:-3] ['d', 'e', 'f', 'g'] μη έγκυρο διάστημα >>> letters[-3:0] [] 12

Κατάτμηση λιστών To διάστημα θέσεων [x:y] μπορεί να έχει ένα ή και κανένα όριο Αν δεν προσδιορίσουμε το πάνω όριο, τότε εννοείται ότι θέλουμε μεχρι το τελευταίο στοιχείο, αν δεν προσδιορίσουμε το κάτω όριο θέλουμε μέχρι το πρώτο, αν κανένα τα θέλουμε όλα >>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] >>> letters[-3:] ['h', 'i', 'j'] >>> letters[:5] ['a', 'b', 'c', 'd', 'e'] >>> letters[:] ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] 13

Άσκηση Δίνεται μια διαδικτυακή διεύθυνση (URL) του τύπου http://www.something.com Ζητείται να υπολογίσουμε το domain (something) # Split up a URL of the form http://www.something.com url = input('please enter the URL: ') postfix = url[11:] domain = postfix[:-4] print("domain name: ", domain) Please enter the URL: http://www.python.org Domain name: python 14

Βήμα Στo διάστημα θέσεων [x:y] μπορούμε να ορίσουμε έναν τρίτο αριθμό (βήμα) ορίζει για καθε πόσα στοιχεία θα παίρνουμε ένα >>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] >>> letters[0:7:2] ['a', 'c', 'e', 'g'] >>> letters[1::2] ['b', 'd', 'f', 'h', 'j'] >>> letters[::3] ['a', 'd', 'g', 'j'] αρνητικό βήμα >>> letters[8:4:-2] ['i', 'g'] 15

Δημιουργία λίστας από αλφαριθμητικό Η συνάρτηση list() προσφέρει έναν γρήγορο τρόπο δημιουργίας λίστας χαρακτήρων >>> list('hello') ['H', 'e', 'l', 'l', 'o'] =list('hello') ['H', 'e', 'l', 'l', 'o'] 16

Αλλαγή στοιχείων λίστας Μπορούμε να προσπελάσουμε και να αλλάξουμε ένα στοιχείο λίστας με την χρήση δείκτη Μπορούμε να σβήσουμε ένα στοιχείο λίστας =list('hello') ['H', 'e', 'l', 'l', 'o'] [3]='p' ['H', 'e', 'l', 'p', 'o'] >>> del x[4] ['H', 'e', 'l', 'p'] 17

Αλλά... = 'Hello 'Hello' [3] = 'p' Traceback (most recent call last): File "<pyshell#72>", line 1, in <module> x[3] = 'p' TypeError: 'str' object does not support item assignment Στα αλφαριθμητικά (όπως και στις πλειάδες) δεν μπορούμε να κάνουμε αλλαγές! Είναι μη μεταβλητά αντικείμενα! 18

Αλλαγή τμημάτων λίστας Μπορούμε να αλλάξουμε ολόκληρα τμήματα λιστών με χρήση slicing >>> name = list('perl') >>> name ['P', 'e', 'r', 'l'] >>> name[2:] = list('ar') >>> name ['P', 'e', 'a', 'r'] >>> name[1:] = list('ython') >>> name ['P', 'y', 't', 'h', 'o', 'n'] αλλαγή στοιχείων και επέκταση της λίστας ταυτόχρονα 19

Αλλαγή τμημάτων λίστας Μπορούμε να αλλάξουμε ολόκληρα τμήματα λιστών με χρήση slicing >>> numbers = [1, 5] >>> numbers[1:1] = [2, 3, 4] >>> numbers [1, 2, 3, 4, 5] >>> numbers[1:4] = [] >>> numbers [1, 5] εισαγωγή στοιχείων χωρίς να διαγράψουμε τα υπάρχοντα διαγραφή στοιχείων μέσα στο διάστημα θέσεων 20

Μέθοδοι λίστών (append) Μπορούμε να προσθέσουμε ένα στοιχείο στο τέλος της λίστας με τη μέθοδο append Μέθοδος: συνάρτηση που καλείται μέσα από ένα αντικείμενο = list('hello') ['H', 'e', 'l', 'l', 'o'].append('p') ['H', 'e', 'l', 'l', 'o', 'p'].append('pow') ['H', 'e', 'l', 'l', 'o', 'p', 'pow'] η λίστα είναι αντικείμενο η append είναι μέθοδος λιστών H append προσθέτει πάντα στο τέλος στης λίστας μπορούμε να προσθέσουμε οποιουδήποτε τύπου στοιχεία σε μια λίστα 21

Μέθοδοι λίστών (insert) Μπορούμε να προσθέσουμε ένα στοιχείο σε μια συγκεκριμένη θέση της λίστας με τη μέθοδο insert = list('hello') ['H', 'e', 'l', 'l', 'o'].insert(0, 'P') ['P', 'H', 'e', 'l', 'l', 'o'].insert(len(x),'p') ['P', 'H', 'e', 'l', 'l', 'o', 'p'] το νεο στοιχείο μπαίνει ακριβώς πρίν από τη θέση εισαγωγής που καθορίζουμε ισοδύναμο με το x.append('p') το x.insert(i, elem) ισοδυναμεί με το x[i:i] = elem 22

Μέθοδοι λίστών (count) Μπορούμε να μετρήσουμε το πλήθος των στοιχείων μιας λίστας που έχουν μια συγκεκριμένη τιμή με τη μέθοδο count = [[1, 2], 1, 1, [2, 1, [1, 2]]].count(1) 2.count([1,2]) 1 >>> ['to', 'be', 'or', 'not', 'to', 'be'].count('to') 2 23

Μέθοδοι λίστών (extend) Πολλαπλά στοιχεία προστίθενται σε μια λίστα με τη μέθοδο extend >>> a = [1, 2, 3] >>> b = a >>> a.extend(b) >>> a [1, 2, 3, 1, 2, 3] To a.extend(b) είναι ισοδύναμο με το a[len(a):]=b 24

Μέθοδοι λίστών (pop) Η μέθοδος pop επιστρέφει ένα στοιχείο της λίστας και ταυτόχρονα το διαγράφει από αυτή = [1, 2, 3].pop() 3 [1, 2].pop(0) 1 [2] αν δεν προσδιορίσουμε τη θέση του στοιχείου η pop θεωρεί ότι θέλουμε το τελευταίο στοιχείο από τη λίστα 25

Μέθοδοι λίστών (index) Μπορούμε να ψάξουμε για την πρώτη εμφάνιση ενός στοιχείου με τη μέθοδο index >>> knights = ['We', 'are', 'the', 'knights', 'who', 'say', 'ni'] >>> knights.index('who') 4 >>> knights.index('herring') Traceback (most recent call last): File "<pyshell#123>", line 1, in <module> knights.index('herring') ValueError: 'herring' is not in list 26

Μέθοδοι λίστών (reverse) Η μέθοδος reverse αντιστρέφει τη σειρά των στοιχείων της λίστας =[1,2,3].reverse() [3, 2, 1] =[1,2,3] >>> y=list(reversed(x)) >>> y [3, 2, 1] [1, 2, 3] reversed(x): επιστρέφει τα στοιχεία της λίστας x σε αντίστροφη σειρά χωρίς να αντιστρέφει την ίδια τη λίστα x 27

Μέθοδοι λίστών (sort) Η μέθοδος sort ταξινομεί τη λίστα, βάζοντας τα στοιχεία της σε αυξουσα σειρα = [4, 6, 2, 1, 7, 9].sort() [1, 2, 4, 6, 7, 9] = [4, 6, 2, 1, 7, 9] >>> sorted(x) [1, 2, 4, 6, 7, 9] [4, 6, 2, 1, 7, 9] sorted(x): επιστρέφει τα στοιχεία της λίστας x ταξινομημένα χωρίς να ταξινομεί την ίδια τη λίστα x 28

Μέθοδοι λίστών (sort) Άσκηση: Θέλουμε να αρχικοποιήσουμε μια νέα λίστα με τα περιεχόμενα της x ταξινομημένα, χωρίς να πειράξουμε τη x = [4, 6, 2, 1, 7, 9] >>> y=x >>> y.sort() >>> y [1, 2, 4, 6, 7, 9] [1, 2, 4, 6, 7, 9] λάθος τρόπος: το πρόβλημα είναι ότι το y αναφέρεται στην ίδια λίστα με το x (το y δεν είναι αντιγραφή του x) 29

Μέθοδοι λίστών (sort) Άσκηση: Θέλουμε να αρχικοποιήσουμε μια νέα λίστα με τα περιεχόμενα της x ταξινομημένα, χωρίς να πειράξουμε τη x = [4, 6, 2, 1, 7, 9] >>> y=x[:] >>> y.sort() >>> y [1, 2, 4, 6, 7, 9] [4, 6, 2, 1, 7, 9] σωστός τρόπος αντιγραφής λίστας H λειτουργεία της κατάτμησης επιστρέφει μια ένα λίστα εναλλακτικά: y = list(x) y.sort() y = sorted(x) 30

Αντίστροφη ταξινόμηση Άσκηση: Ταξινόμησε τη λίστα x τοποθετώντας τα στοιχεία από το μεγαλύτερο στο μικρότερο = [4, 6, 2, 1, 7, 9].sort().reverse() [9, 7, 6, 4, 2, 1] Αλλιώς: x.sort(reverse=true) Μεγάλη γκάμα δυνατοτήτων ταξινόμησης στην Python: http://wiki.python.org/moin/howto/sorting 31

Μέθοδοι και Συναρτήσεις Η συνάρτηση είναι ένα κομμάτι κώδικα που επιτελεί μια λειτουργία. Καλείται με ορίσματα. Π.χ., sorted(x) Η μέθοδος είναι ένα κομμάτι κώδικα που επιτελεί μια λειτουργία που καλείται από ένα αντικείμενο (π.χ., από μία λίστα ή ένα αλφαριθμητικό) Π.χ., x.sort() Η διαφορά είναι ότι η συνάρτηση δουλεύει με τα ορίσματα που της δίνονται. Η μέθοδος έχει πρόσβαση σε όλα τα δεδομένα του αντικειμένου.

Μεταβλητές (ξανά!) Γενικά μια μεταβλητή αναφέρεται σε ένα αντικείμενο (αριθμός, αλφαριθμητικό, λίστα, κλπ.) = 5 >>> lst = [1,2,3,4] x lst 5 [1,2,3,4] 33

Μεταβλητές (ξανά!) Υπάρχουν δύο τύποι αντικειμένων: μεταβαλλόμενα και μη μεταβαλλόμενα μεταβαλλόμενα: λίστες μή μεταβαλλόμενα: αριθμοί, αλφαριθμητικά, πλειάδες = 5 >>> lst = [1,2,3,4] x lst 5 [1,2,3,4] 34

Μεταβλητές (ξανά!) Ο μόνος τρόπος να αλλάξουμε ένα μη μεταβαλλόμενο αντικείμενο είναι να ορίσουμε ένα νέο αντικείμενο για τη μεταβλητή μας = 7 x lst 5 7 [1,2,3,4] 35

Μεταβλητές (ξανά!) Αντίθετα, μπορούμε να αλλάξουμε ένα μεταβαλλόμενο αντικείμενο, χωρίς να χρειαστεί να ορίσουμε νέο >>> lst[2] = 7 lst [1,2,3,4] 7 36

Μεταβλητές (ξανά!) Αν εξισώσουμε 2 μεταβλητές, αυτές θα αναφέρονται στο ίδιο αντικείμενο. Αν το αντικείμενο είναι μεταβαλλόμενο και αλλάξει, οι τιμές και των δύο μεταβλητών αλλάζουν >>> lst = [1,2,3,4] >>> lstnew = lst >>> lst[2] = 7 >>> lstnew [1, 2, 7, 4] lst lstnew [1,2,3,4] 7 37

Μεταβλητές (ξανά!) Αν εξισώσουμε 2 μεταβλητές, αυτές θα αναφέρονται στο ίδιο αντικείμενο. Αν το αντικείμενο είναι μη μεταβαλλόμενο και αλλάξουμε τη μία μεταβλητή, τότε αυτή θα αναφέρεται σε άλλο αντικείμενο = 5 >>> y = x y x = 7 >>> y 5 5 7 38

= [[1,2],[3,4]] >>> y = list(x) >>> y.append(5) >>> y [[1, 2], [3, 4], 5] [[1, 2], [3, 4]] >>> y[1][0] = 0 >>> y [[1, 2], [0, 4], 5] [[1, 2], [0, 4]] Μεταβλητές Τι θα εκτυπώσει το παρακάτω πρόγραμμα?

Μεταβλητές Τι θα εκτυπώσει το παρακάτω πρόγραμμα? = [[1,2],[3,4]] >>> y = list(x) >>> y.append(5) >>> y [[1, 2], [3, 4], 5] [[1, 2], [3, 4]] >>> y[1][0] = 0 >>> y [[1, 2], [0, 4], 5] [[1, 2], [0, 4]] x [1,2] [3,4]

Μεταβλητές Τι θα εκτυπώσει το παρακάτω πρόγραμμα? = [[1,2],[3,4]] >>> y = list(x) >>> y.append(5) >>> y [[1, 2], [3, 4], 5] [[1, 2], [3, 4]] >>> y[1][0] = 0 >>> y [[1, 2], [0, 4], 5] [[1, 2], [0, 4]] x [1,2] [3,4] y

Μεταβλητές Τι θα εκτυπώσει το παρακάτω πρόγραμμα? = [[1,2],[3,4]] >>> y = list(x) >>> y.append(5) >>> y [[1, 2], [3, 4], 5] [[1, 2], [3, 4]] >>> y[1][0] = 0 >>> y [[1, 2], [0, 4], 5] [[1, 2], [0, 4]] x [1,2] [3,4] y 5

Μεταβλητές Τι θα εκτυπώσει το παρακάτω πρόγραμμα? = [[1,2],[3,4]] >>> y = list(x) >>> y.append(5) >>> y [[1, 2], [3, 4], 5] [[1, 2], [3, 4]] >>> y[1][0] = 0 >>> y [[1, 2], [0, 4], 5] [[1, 2], [0, 4]] x [1,2] [0,4] y 5

Άσκηση Τι θα εκτυπώσει το παρακάτω πρόγραμμα? >>> I = 3*[[0,0,0]] >>> I [[0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> I[0][0]= 1 >>> I[1][1]= 1 >>> I[2][2]= 1 >>> I [[1, 1, 1], [1, 1, 1], [1, 1, 1]]

Άσκηση Τι θα εκτυπώσει το παρακάτω πρόγραμμα? >>> I = 3*[[0,0,0]] >>> I [[0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> I[0][0]= 1 >>> I[1][1]= 1 >>> I[2][2]= 1 >>> I [[1, 1, 1], [1, 1, 1], [1, 1, 1]] Ι [0,0,0]

Άσκηση Τι θα εκτυπώσει το παρακάτω πρόγραμμα? >>> I = 3*[[0,0,0]] >>> I [[0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> I[0][0]= 1 >>> I[1][1]= 1 >>> I[2][2]= 1 >>> I [[1, 1, 1], [1, 1, 1], [1, 1, 1]] Ι [1,0,0]

Άσκηση Τι θα εκτυπώσει το παρακάτω πρόγραμμα? >>> I = 3*[[0,0,0]] >>> I [[0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> I[0][0]= 1 >>> I[1][1]= 1 >>> I[2][2]= 1 >>> I [[1, 1, 1], [1, 1, 1], [1, 1, 1]] Ι [1,1,0]

Άσκηση Τι θα εκτυπώσει το παρακάτω πρόγραμμα? >>> I = 3*[[0,0,0]] >>> I [[0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> I[0][0]= 1 >>> I[1][1]= 1 >>> I[2][2]= 1 >>> I [[1, 1, 1], [1, 1, 1], [1, 1, 1]] Ι [1,1,1]

Μέθοδοι λίστών Οι λίστες είναι η κύρια δομή δεδομένων στην Python. Υποστηρίζονται από μεγάλο αριθμό μεθόδων >>> help(list) Help on class list in module builtins: class list(object) list() -> new empty list list(iterable) -> new list initialized from iterable's items Methods defined here: 49

Πλειάδες Οι πλειάδες (tuples) είναι ακολουθίες, όπως οι λίστες, οι οποίες όμως δεν μπορούν να αλλαχθούν Το ίδιο ισχύει και για τα αλφαριθμητικά (strings) =1,2,3 (1, 2, 3) [2] 3 [2] = 5 Traceback (most recent call last): File "<pyshell#212>", line 1, in <module> x[2] = 5 TypeError: 'tuple' object does not support item assignment 50

Πλειάδες - αρχικοποίηση = 1, (1,) = tuple([1]) (1,) >>> tuple([1, 2, 3]) (1, 2, 3) >>> tuple('abc') ('a', 'b', 'c') >>> tuple((1, 2, 3)) (1, 2, 3) >>> z = tuple() >>> z () το κόμμα στο τέλος υπονοεί πλειάδα με ένα στοιχείο x = 1 (χωρίς κόμμα) ορίζει οτί το x είναι ακέραιος αριθμός και όχι πλειάδα! 51

Λειτουργίες σε Πλειάδες Ακριβώς όπως οι λειτουργίες σε λίστες (π.χ. slicing) Διαφορές Οι πλειάδες δεν μπορούν να αλλαχθούν Οι πλειάδες δεν έχουν όλες τις μεθοδους λιστών συγκεκριμένα: δεν έχουν τις μεθόδους που αλλάζουν τις λίστες =1,2,3 [:2] (1, 2).count(2) 1.index(3) 2.sort() Traceback (most recent call last): File "<pyshell#209>", line 1, in <module> x.sort() AttributeError: 'tuple' object has no attribute 'sort' 52

Γιατί πλειάδες; Αφου οι πλειάδες έχουν περιορισμένη λειτουργικότητα σε σχέση με τις λίστες, γιατί τις χρησιμοποιούμε; Κάποιες λειτουργίες που θα δούμε αργότερα (π.χ. κλειδιά σε λεξικό) υποστηρίζονται με πλειάδες Κάποιες συναρτήσεις επιστρέφουν το αποτέλεσμά τους σε μορφή πλειάδων, οπότε πρέπει να ξέρουμε πως να τις χειριστούμε Στη γενική περίπτωση στα προγράμματα χρησιμοποιούμε λίστες αντί για πλειάδες 53

Μετατροπές >>> l = list((1,2,3)) >>> l [1, 2, 3] >>> t = tuple(l) >>> t (1, 2, 3) >>> l = list("hello") >>> l ['h', 'e', 'l', 'l', 'o'] >>> s = "".join(l) >>> s 'hello' >>> l = 3*["a rose"] >>> " is ".join(l) 'a rose is a rose is a rose' join: μέθοδος των strings η οποία παίρνει μια λίστα από strings και τα συνενώνει με διαχωριστικό το string που καλεί την μέθοδο