ΜΥΥ105: Εισαγωγή στον Προγραμματισμό

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Indexing.
Advertisements

Το αλφαριθμητικό (string)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
PROLOG.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Γλωσσική Τεχνολογία Object-Orientation in Python.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Microsoft Excel 4.2 Κελιά Κίκα Χρυσοστόμου.
Φροντηστήριο Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Eργαλεία.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Γλωσσική Τεχνολογία String Handling – Regular Expressions.
ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ ΜΑΘΗΜΑ 3.
Δυναμική Διατήρηση Γραμμικής Διάταξης Διατηρεί μια γραμμική διάταξη δυναμικά μεταβαλλόμενης συλλογής στοιχείων. Υποστηρίζει τις λειτουργίες: Έλεγχος της.
ΣΥΝΑΡΤΗΣΕΙΣ.
Δημιουργώντας νέες λέξεις - Διαδικασίες
Microsoft Excel 4.4 Τύποι και Συναρτήσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Lists– Λίστες 1. Αυτό-αναφορικές δομές Τα μέλη μίας δομής μπορεί να είναι οποιουδήποτε τύπου, ακόμα και δείκτες σε δομές του ίδιου τύπου. Χρησιμοποιώντας.
Ενότητα Α.4. Δομημένος Προγραμματισμός
Γλωσσική Τεχνολογία Εισαγωγικό Φροντιστήριο. Project του μαθήματος  Εργασία 2 ατόμων  Προφορική εξέταση για :  Project (80%)  Θεωρία (20%)  Στο φροντιστήριο.
Δομές Δεδομένων. Επιλογή δομής δεδομένων Κριτήρια: – Μέγεθος του προβλήματος – Πως θα χρησιμοποιηθεί Ενέργειες που καθορίζουν το κόστος: – Lookup: αναζήτηση/έλεγχος.
ΜΑΘΗΜΑ: ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Τμ.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
32η Συνάντηση Εκπαιδευτικών στη Δυτική Μακεδονία σε Θέματα Τ. Π. Ε
Tomcat Θ. Βαρβαρίγου Καθηγήτρια ΕΜΠ Τηλ
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ – FILE & PROCESS HANDLING Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
ΕΙΣΑΓΩΓΙΚΟ ΦΡΟΝΤΙΣΤΗΡΙΟ Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία.
Τεχνολογία ΛογισμικούSlide 1 Εξειδίκευση Βασισμένη σε Μοντέλο u Τυπική εξειδίκευση λογισμικού με ανάπτυξη μαθηματικού μοντέλου για το σύστημα.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αλφαριθμητικά (Strings)
Βασικά στοιχεία της Java
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της οποίας η τιμή θα περάσει από την αρχική.
ΣΗΜΑΤΑ ΚΑΙ ΣΥΣΤΗΜΑΤΑ II Καθ. Πέτρος Π. Γρουμπός Διάλεξη 8η Στοχαστικά Σήματα - 1.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
Οι Δομές Δεδομένων Ουρά και Στοίβα
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Δυναμικός Κατακερματισμός
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Δείκτες Προγραμματισμός Ι
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Κλάσεις και αντικείμενα
Ενισχυτική διδασκαλία
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Web Services στη C# Εργαστήριο 3
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ Η/Υ
Οι Δομές Δεδομένων Ουρά και Στοίβα
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
Μεταγράφημα παρουσίασης:

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

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

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

Λίστες Μια λίστα ορίζεται σαν ακολουθία στοιχείων, χωρισμένα από κόμματα, εντός ενός [ και ενός ] Μια λίστα μπορεί να περιέχει στοιχεία διαφορετικών τύπων >>>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”]

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

Άλλες λειτουργίες σε λίστες μήκος λίστας = αριθμός στοιχείων στη λίστα >>> 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

Άλλες λειτουργίες σε λίστες >>> 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

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

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

Άλλες λειτουργίες σε λίστες μήκος λίστας = αριθμός στοιχείων στη λίστα = αριθμός από λίστες >>> 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]

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

Κατάτμηση λιστών Κατάτμηση (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] [] μη έγκυρο διάστημα

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

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

Βήμα Στ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'] αρνητικό βήμα

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

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

Αλλά... >>> 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 Στα αλφαριθμητικά (όπως και στις πλειάδες) δεν μπορούμε να κάνουμε αλλαγές! Είναι αμετάβλητα αντικείμενα!

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

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

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

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

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

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

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

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

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

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

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

Μέθοδοι λίστών (sort) Άσκηση: Θέλουμε να αρχικοποιήσουμε μια νέα λίστα με τα περιεχόμενα της x ταξινομημένα, χωρίς να πειράξουμε τη x σωστός τρόπος αντιγραφής λίστας H λειτουργεία της κατάτμησης επιστρέφει μια νέα λίστα >>> 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)

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

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

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

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

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

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

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

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

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

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

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

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

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

Άσκηση Τι θα τυπώσει η παρακάτω ακολουθία εντολών; >>> 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 [[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 [[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 [[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 [[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 [[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: …

Πλειάδες Οι πλειάδες (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

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

Λειτουργίες σε Πλειάδες Ακριβώς όπως οι λειτουργίες σε λίστες (π.χ. 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'

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

Μετατροπές >>> l = list((1,2,3)) >>> l [1, 2, 3] >>> t = tuple(l) >>> t (1, 2, 3) >>> l = list("hello") ['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 που καλεί την μέθοδο