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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

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

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

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

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

υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες

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

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

ΗΥ-150. Πίνακες (Arrays)

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

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

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

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

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

Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram.

ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Τµήµα Μηχανικών Πληροφορικής ΤΕ Λειτουργικά Συστήµατα (Εργαστήριο) Διδάσκων: I. Τσακνάκης. 7ο Εργαστήριο

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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

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

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

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

a = 10; a = k; int a,b,c; a = b = c = 10;

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

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

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

for for for for( . */

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

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

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

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

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

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

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

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

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

Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία ΕΙΣΑΓΩΓΙΚΟ ΦΡΟΝΤΙΣΤΗΡΙΟ

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Τετάρτη 7/12/2016, 21:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59

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

Γλωσσική Τεχνολογία. String Handling Regular Expressions

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης

String Handling ΓΛΩΣΣΙΚΉ ΤΕΧΝΟΛΟΓΊΑ

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

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

LAB1 ΛΥΣΗ. Ευρετήριο απαντήσεων ανά τµήµα: Ευρετήριο απαντήσεων ανά µήνυµα λάθους/προειδοποίησης

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

ΑΣΚΗΣΕΙΣ ΘΕΩΡΙΑΣ. ΘΕΜΑ 1 Δίνεται το παρακάτω τμήμα δηλώσεων ενός προγράμματος σε «ΓΛΩΣΣΑ»: ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Π[10] ΛΟΓΙΚΕΣ: ΒΡΕΘΗΚΕ ΑΚΕΡΑΙΕΣ: i

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

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

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

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

ΗΥ-150. Προγραµµατισµός. Πίνακες (Arrays)

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

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

Φροντιστήριο 1ο Εισαγωγή στο FLEX. Flex. Regular Expressions (1/4)

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

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

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

ΚΕΦΑΛΑΙΟ 2 Βασικές έννοιες αλγορίθµων

KΕΦΑΛΑΙΟ 1 ΧΡΗΣΙΜΕΣ ΜΑΘΗΜΑΤΙΚΕΣ ΕΝΝΟΙΕΣ. { 1,2,3,..., n,...

ΤΕΙ Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής & Επικοινωνιών. Επώνυμο Όνομα: Α.Μ. : Εξάμηνο : Αίθουσα

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

Κεφάλαιο 5ο: Εντολές Επανάληψης

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

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

char name[5]; /* define a string of characters */

Transcript:

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

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

Χρήση ακολουθιών Η χρήση ακολουθιών στην Python είναι εκτενής Ορίζουµε και χρησιµοποιούµε ακολουθίες όταν θέλουµε να διαχειριστούµε συλλογές δεδοµένων Π.χ. χρήση λιστών για τη δηµιουργία µιας βάσης δεδοµένων µε ονόµατα και ηλικίες προσώπων: >>>edward=['edward Gumby', 42] >>>john=['john Smith', 50] >>>database=[edward, john] >>>database [['Edward Gumby', 42], ['John Smith', 50]] 3

Λίστες Μια λίστα ορίζεται σαν ακολουθία στοιχείων, χωρισµένα από κόµµατα, εντός ενός [ και ενός ] Μια λίστα µπορεί να περιέχει στοιχεία διαφορετικών τύπων >>>edward=['edward Gumby', 42] >>>john=['john Smith', 50] λίστα από λίστες >>>database=[edward, john] >>>database [['Edward Gumby', 42], ['John Smith', 50]] 4

Προσπέλαση στοιχείων Τα στοιχεία µιας λίστας µπορούν να προσπελαστούν κατ αντιστοιχία µε την προσπέλαση χαρακτήρων σε ένα αλφαριθµητικό Το πρώτο στοιχείο στη θέση 0, το 2 ο στη θέση 1, κλπ. Επίσης: αρνητική δεικτοδότηση >>> john[0] 'John Smith' >>> database[-1] ['John Smith', 50] 5

Άλλες λειτουργίες σε λίστες >>> len(database) 2 >>> john + john ['John Smith', 50, 'John Smith', 50] >>> 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] 6

Άλλες λειτουργίες σε λίστες >>> 3 * john ['John Smith', 50, 'John Smith', 50, 'John Smith', 50] >>> 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

Κατάτµηση λιστών Κατάτµηση (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:0] [] 9

Κατάτµηση λιστών 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'] 10

Άσκηση Δίνεται µια διαδικτυακή διεύθυνση (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 11

Βήµα Στ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'] 12

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

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

Αλλά... >>> x= 'Hello >>> x 'Hello' >>> x[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 Στα αλφαριθµητικά (όπως και στις πλειάδες) δεν µπορούµε να κάνουµε αλλαγές! 15

Αλλαγή τµηµάτων λίστας Μπορούµε να αλλάξουµε ολόκληρα τµήµατα λιστών µε χρήση 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'] αλλαγή στοιχείων και επέκταση της λίστας ταυτόχρονα 16

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

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

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

Μέθοδοι λίστών (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 20

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

Μέθοδοι λίστών (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 22

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

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

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

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

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

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

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

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

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

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

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

Μέθοδοι λίστών Οι λίστες είναι η κύρια δοµή δεδοµένων στην 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: 34

Πλειάδες Οι πλειάδες (tuples) είναι ακολουθίες, όπως οι λίστες, οι οποίες όµως δεν µπορούν να αλλαχθούν Το ίδιο ισχύει και για τα αλφαριθµητικά (strings) >>> x=1,2,3 >>> x (1, 2, 3) >>> x[2] 3 >>> x[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 35

Πλειάδες - αρχικοποίηση >>> x = 1, >>> x (1,) >>> x = tuple([1]) >>> x (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 είναι ακέραιος αριθµός και όχι πλειάδα! 36

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

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