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

Σχετικά έγγραφα
Εισαγωγή στον Προγ/μό Υπολογιστών

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

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

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

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

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

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

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ (ΟΜΑΔΑ ΘΕΜΑΤΩΝ A)

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

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

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

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

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

Κεφάλαιο : Επαναλήψεις (o βρόγχος While) (Διάλεξη 9) Δομές Έλεγχου Προγράμματος

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

ΣΤΗΛΗ Β ΑΠΟΤΕΛΕΣΜΑ 1. float(10) α pow(2,3) β abs(-10) γ int(5.6) δ. 10 ε. 5.6 Μονάδες 8 ΣΤΗΛΗ Α ΣΥΝΑΡΤΗΣΗ

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

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

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός

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

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

Εντολές ελέγχου ροής if, for, while, do-while

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

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

Υπολογισμός - Εντολές Επανάληψης

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

Πληρουορική Γ Γσμμασίοσ

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

for for for for( . */

ιαδικαστικός Προγραμματισμός

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

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

9. Εντολές επανάληψηςκαι η εντολή

Προγραμματιστικά Εργαλεία και Τεχνολογίες για Επιστήμη Δεδομένων

Δραστηριότητα 2.2 Δομές επανάληψης και επιλογής

print( x is positive ) Στο διερμηνευτή Python, προσοχή στη στοίχιση, διότι γίνεται από το χρήστη:

Διαδικασιακός Προγραμματισμός

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Εισαγωγή στον Προγραμματισμό με την Python 3. Βασίλης Βασιλάκης Γιώργος Μπουκέας

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ΚΑΙ Β ) ΤΡΙΤΗ 13 ΙΟΥΝΙΟΥ 2017

Διαδικαστικός Προγραμματισμός

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

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

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

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

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

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

Μεθόδων Επίλυσης Προβλημάτων

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

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

HY340, 2009 Α. Σαββίδης Slide 2 / 143. HY340, 2009 Α. Σαββίδης Slide 3 / 143. HY340, 2009 Α. Σαββίδης Slide 4 / 143

Η γλώσσα προγραμματισμού C

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

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

Προγραμματισμός ΗΥ και Υπολογιστική Φυσική. Χρήστος Γκουμόπουλος

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

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

Κεφάλαιο : Επαναλήψεις (oι βρόχος While) ( ιάλεξη 9) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Εντολές Επανάληψης. int sum = 0, i=1; sum += i++ ; sum += i++ ; Η πράξη αυτή θα πρέπει να επαναληφθεί Ν φορές!

Διαδικασιακός Προγραμματισμός

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

ιαδικαστικός Προγραμματισμός

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

Υπολογισμός - Εντολές Ελέγχου

Δομές ελέγχου ροής προγράμματος

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό

Σημειωματάριο Τετάρτης 29 Νοε. 2017

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C

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

Σημειωματάριο μαθήματος 1ης Νοε. 2017

Εισαγωγή στην Αριθμητική Ανάλυση

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

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

Προγραμματισμός Ι (HY120)

Τιμές και τύποι, μεταβλητές Ένα πρώτο σημαντικό βήμα για να μάθουμε να προγραμματίζουμε είναι να

Runtime Checking (1/3) Runtime Checking (2/3) Runtime Checking (3/3) ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο

Εισαγωγή στους Η/Υ και τις Εφαρμογές Ενότητα 5: Επεξεργασία δεδομένων με τη γλώσσα προγραμματισμού python Υπο-ενότητα 5.2: Συμβολοσειρές-Έλεγχος Ροής

Συναρτήσεις. Εισαγωγή

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

Η γλώσσα προγραμματισμού Strange

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Συναρτήσεις. ΚΕΡΟΣ ΓΙΑΝΝΗΣ, ΠΕ19 1ο ΕΠΑΛ ΚΙΛΚΙΣ. Κέρος Α. Ιωάννης Καθηγητής Πληροφορικής ΠΕ19 1 ο ΕΠΑΛ Κιλκίς

Να γράψετε τους αριθμούς 1, 2, 3 από τη Στήλη Α και δίπλα το γράμμα α, β, γ, δ, ε από τη Στήλη Β που δίνει τη σωστή αντιστοιχία.

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΩΝ & Δ ΤΑΞΗΣ ΕΣΠΕΡΙΝΩΝ

Transcript:

Εισαγωγή στον Προγ/μό Υπολογιστών Διάλεξη 7 Ακολουθίες (Sequences)

Περιεχόμενα 1. Ακολουθίες 2. Λίστα (list) 3. Επαναληπτικοί υπολογισμοί ακολουθιών 4. Επεξεργασία ακολουθιών 5. Τελεστές ακολουθιών 6. Αλφαριθμητικά

Ακολουθίες

Ακολουθίες Οι ακολουθίες (sequences) δεν είναι ένας συγκεκριμένος τύπος δεδομένων, αλλά σύνολο χαρακτηριστικών που μοιράζονται πολλοί τύποι Κάθε τύπος που έχει αυτά τα χαρακτηριστικά θεωρείται ακολουθία Χαρακτηριστικά ακολουθίας: Μέγεθος: Κάθε ακολουθία έχει πεπερασμένο μέγεθος (πλήθος στοιχείων). Μια κενή ακολουθία έχει μέγεθος 0 Επιλογή στοιχείου: κάθε θετικός ακέραιος μικρότερος του μεγέθους αντιστοιχεί σε στοιχείο της ακολουθίας, με το 0 να αντιστοιχεί στο πρώτο στοιχείο Ενσωματωμένοι τύποι της Python που είναι ακολουθίες: list, range, tuple, string,

Λίστα (list)

Λίστα Παραδείγματα χρήσης list >>> ls = [1, 3, 5, 3, 9] >>> ls [1, 3, 5, 3, 9] >>> len(ls) 5 >>> ls[4] 9 >>> ls + 2*[-10, 23] [1, 3, 5, 3, 9, -10, 23, -10, 23]

Λίστα Παραδείγματα χρήσης list >>> ls = [1, 3, 5, 3, 9] >>> ls [1, 3, 5, 3, 9] >>> len(ls) 5 >>> ls[4] 9 >>> ls + 2*[-10, 23] [1, 3, 5, 3, 9, -10, 23, -10, 23]

Λίστα Γενική μορφή επιλογέα στοιχείου ακολουθίας: <ακολουθία>[i] Η τιμή του i-οστού στοιχείου της <ακολουθία> 1 ο στοιχείο: <ακολουθία>[0] Τελευταίο στοιχείο: <ακολουθία>[ len(<ακολουθία>) - 1 ] Το i λέγεται δείκτης και αντιπροσωπεύει απόσταση από την πρώτη θέση Ισοδύναμο με την κλήση getitem(<ακολουθία>, i) Αρνητικοί δείκτες αντιπροσωπεύουν απόσταση από την θέση μετά την τελευταία, δηλαδή από την τιμή δείκτη len(<ακολουθία>): <ακολουθία>[-i] == <ακολουθία>[len(<ακολουθία>)-i] για i>0 >>> x = [1, 3, 5, 9, 19] >>> x[4] 19 >>> x[-1] 19 >>> x[-5] 1

Λίστα Παράδειγμα: υπολογισμός μέσου όρου βαθμών μαθημάτων def average(x): i, total, n = 1, 0, len(x) while i <= n: total += x[i-1] i = i + 1 return total / n n = int(input('πλήθος µαθηµάτων: ')) i = 1 grade = [] while i <= n: value = float(input(βαθµός '+str(i)+'ος: ')) grade = grade + [value] i = i + 1 print('μέσος όρος:', average(grade))

Λίστα Τα στοιχεία μιας λίστας μπορεί να ανήκουν σε διαφορετικούς τύπους >>> ls2 = [1, 4.5, 'hello', [2, 3], print] >>> ls2[3] [2, 3] >>> ls2[3][0] 2 >>> ls2[4]('guess who?') Guess who? >>> ls2[4] <built-in function print>

Λίστα Αναπαράσταση αλγεβρικών πινάκων με φωλιασμένες λίστες Πχ, πίνακας Α = 1 2 3 4 5 6, A +, = 6 >>> a = [[1, 2, 3], [4, 5, 6]] >>> a[1][2] 6

Ακολουθία range

Ακολουθία range range(a, b)... a a+1... -3-2 -1 0 1 2 3... b-1 b... range(b)... a a+1... -3-2 -1 0 1 2 3... b-1 b... range(a, b, step)... a a+1... -3-2 -1 0 1 2 3... b-1 b... +step +step +step +step +step (2o στοιχείο: a+step, 3ο στοιχείο: a+2*step,...)

Ακολουθία range >>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> digits = range(0, 11) >>> digits[3] 3 >>> digits range(0, 10) >>> list(digits) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> even_digits = range(0, 10, 2) >>> list(even_digits) [0, 2, 4, 6, 8]

Ακολουθία range >>> digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> digits = range(0, 11) >>> digits[3] 3 >>> digits range(0, 10) >>> list(digits) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> even_digits = range(0, 10, 2) >>> list(even_digits) [0, 2, 4, 6, 8]

Ακολουθία range Lazy evaluation: η range σε αντίθεση με τη list, δεν κατασκευάζει τα στοιχεία της πριν αποτιμηθούν αυτά πχ, με r[i] παρακάτω >>> r = range(round(1e+100)) # 1 Petabyte = 1e+15 >>> r[0] 0 >>> r[-1] 1000000000000000015902891109759918046836080856394528138 9781327557747838772170381060813469985856815103 >>> list(r) Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: Python int too large to convert to C ssize_t

Επαναληπτικοί υπολογισμοί

Επαναληπτικοί υπολογισμοί >>> def sum_list0(ls): i = 1, total = 0 while i <= len(ls): total += ls[i] return total >>> def sum_list(ls): total = 0 for x in ls total += x return total >>> s = [1, 5, -3, 20] >>> sum_list0(s) 23 >>> sum_list(s) 23 >>> sum(s) 23

Επαναληπτικοί υπολογισμοί Γενική μορφή εντολής επανάληψης for: for <όνοµα> in <έκφραση>: <µπλόκ εντολών> Τιμή τύπου iterable, δηλαδή μπορεί να το "διατρέξει" η εντολή for, πχ, ακολουθίες άλλα παραδείγματα παρακάτω Εκτέλεση εντολής for: 1. Στο τρέχον πλαίσιο το <όνοµα> δένεται με το 1 ο στοιχείο του iterable που αποτιμάται η <έκφραση>. Εάν η ακολουθία δεν έχει στοιχεία τελειώνει η εκτέλεση της for. 2. Εκτελούνται όλες οι εντολές του μπλοκ 3. Το <όνοµα> δένεται στο επόμενο στοιχείο του iterable και επαναλαμβάνεται το βήμα 2 έως ότου δεν υπάρχει άλλο επόμενο στοιχείο

Επαναληπτικοί υπολογισμοί Όπως στη while, στο μπλοκ εντολών της for μπορούν να χρησιμοποιηθούν οι εντολές break, continue Εντολή break: διακόπτεται η εκτέλεση εντολών του μπλοκ και συνεχίζει η εκτέλεση από την εντολή που ακολουθεί τη for Παράδειγμα: >>> for i in range(100) print(i) if i == 2: break print('just printed', i) 0 Just printed 0 1 Just printed 1 2

Επαναληπτικοί υπολογισμοί Εντολή continue: δεν εκτελούνται οι παρακάτω εντολές στο μπλοκ και η εκτέλεση συνεχίζεται με το επόμενο στοιχείο του iterable (εάν υπάρχει, αλλιώς τελειώνει η εκτέλεση της for) Παράδειγμα: >>> for i in range(5) if i == 2: continue print(i) 0 1 3 4

Επαναληπτικοί υπολογισμοί Unpacking: ανάκτηση τιμών που βρίσκονται μέσα σε φωλιασμένες λίστες >>> ls = [[1,2], [3,4], [5,6]] >>> for x,y in ls: print(x+y) 3 7 11

Επεξεργασία ακολουθιών

Επεξεργασία ακολουθιών Επεξεργασία ακολουθιών: τρόπος υπολογισμού όπου εφαρμόζονται διαδοχικά στάδια επεξεργασίας σε μια ακολουθία Παράδειγμα: πλήθος 'apple' στο καλάθι: basket = ['apple', 'orange', 'grapes', 'apple', 'banana'] Τύπος επεξεργασίας 1: "Απεικόνιση": κάθε στοιχείο της ακολουθίας αντιστοιχίζεται σε τιμή μέσω κάποιας συνάρτησης Τύπος επεξεργασίας 2: "Συγκέντρωση": οι τιμές της απεικόνισης δίνουν μια τιμή ως αποτέλεσμα μέσω κάποιου τελεστή, πχ. +, *

Επεξεργασία ακολουθιών Επεξεργασία ακολουθιών: τρόπος υπολογισμού όπου εφαρμόζονται διαδοχικά στάδια επεξεργασίας σε μια ακολουθία Παράδειγμα: πλήθος 'apple' στο καλάθι: basket = ['apple', 'orange', 'grapes', 'apple', 'banana'] Τύπος επεξεργασίας 1: "Απεικόνιση": κάθε στοιχείο της ακολουθίας αντιστοιχίζεται σε τιμή μέσω κάποιας συνάρτησης Τύπος επεξεργασίας 2: "Συγκέντρωση": οι τιμές της απεικόνισης δίνουν μια τιμή ως αποτέλεσμα μέσω κάποιου τελεστή, πχ. +, *, max

Επεξεργασία ακολουθιών Επεξεργασία ακολουθιών: τρόπος υπολογισμού όπου εφαρμόζονται διαδοχικά στάδια επεξεργασίας σε μια ακολουθία Παράδειγμα: εύρεση όλων των πρώτων αριθμών μικρότερων του 20 με "κόσκινο του Ερατοσθένη": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] [2, 3, 5, 7, 9, 11, 13, 15, 17, 19] [2, 3, 5, 7, 11, 13, 17, 19] [2, 3, 5, 7, 11, 13, 17, 19]... [2, 3, 5, 7, 11, 13, 17, 19] Τύπος επεξεργασίας 3: "Φιλτράρισμα": κατασκευή νέας ακολουθίας όπου αφαιρούνται στοιχεία που δεν πληρούν κάποια συνθήκη

Επεξεργασία ακολουθιών Η Python διαθέτει δύο τρόπους για επεξεργασία ακολουθιών: 1. List comprehensions: εκφράσεις που αποτιμώνται σε λίστα. Δίδονται με ειδικό συντακτικό που μοιάζει με αυτό των εντολών for και if και υλοποιούν απεικόνιση και φιλτράρισμα 2. Ενσωματωμένες συναρτήσεις ανώτερου επιπέδου map, reduce, filter

Επεξεργασία ακολουθιών Απεικόνιση στοιχείων (mapping) με list comprehension >>> numbers = [1, -43, 8, 3, 4] >>> increased_numbers = [x + 1 for x in numbers] >>> increased_numbers [2, -42, 9, 4, 5] >>> [pow(x, 2) for x in increased_numbers] [4, 1764, 81, 16, 25]

Επεξεργασία ακολουθιών Φιλτράρισμα στοιχείων (filtering) με list comprehension >>> numbers [1, -43, 8, 3, 4] >>> [x+1 for x in numbers if x >= 0] [2, 9, 4, 5] >>> isodd = lambda x: x % 2!= 0 >>> [x for x in numbers if isodd(x)] [1, -43, 3]

Επεξεργασία ακολουθιών Γενική μορφή list comprehension: [ <έκφραση> for <όνοµα> in <iterable> if <έκφραση_if> ] Έκφραση με τιμή τύπου list Ισοδύναμη με την τιμή του result μετά τις εντολές: result = [] for <όνοµα> in <iterable>: if <έκφραση_if>: result = result + [ <έκφραση> ]

Επεξεργασία ακολουθιών Συγκέντρωση (reduction): το αποτέλεσμα εφαρμογής ενός τελεστή σε όλα τα στοιχεία μιας ακολουθίας Ενσωματωμένες συναρτήσεις συγκέντρωσης sum, max, min >>> sum([1, 4, -6, 9, -10]) -2 >>> max([1, 4, -6, 9, -10]) 9 >>> min([1, 4, -6, 9, -10]) -10

Επεξεργασία ακολουθιών Μέτρηση φορών που εμφανίζεται η τιμή 'apple' στo basket: >>> basket = ['apple','orange','grapes','apple','banana'] >>> isapple = lambda x: x == 'apple' >>> sum([1 for x in ls if isapple(x)]) 2 >>> len([x for x in ls if isapple(x)]) 2 >>> sum([1 if isapple(x) else 0 for x in ls]) 2 >>> sum([isapple(x) for x in ls]) 2

Επεξεργασία ακολουθιών Παράδειγμα: κατασκευή λίστας τέλειων αριθμών μικρότερων του 1000 Τέλειος αριθμός: είναι ίσος με το άθροισμα των διαιρέτων του Πχ, 6 = 1 + 2 + 3, 28 = 1 + 2 + 4 + 7 + 14 >>> def divisors(n): return [x for x in range(1, n) if n % x == 0] >>> [n for n in range(1, 1000) if n == sum(divisors(n))] [6, 28, 496]

Επεξεργασία ακολουθιών Φωλιασμένα for σε list comprehensions >>> fruits = ['apple', 'orange', 'peach'] >>> cream = ['vanilla', 'chocolate'] >>> combos = [x+' '+y for x in fruits for y in cream] >>> combos ['apple vanilla', 'apple chocolate', 'orange vanilla', 'orange chocolate', 'peach vanilla', 'peach chocolate'] >>> [x+' '+y for x in fruits if x!= 'peach' \ for y in cream if [x,y]!= ['apple', 'chocolate']] ['apple vanilla', 'orange vanilla', 'orange chocolate']

Επεξεργασία ακολουθιών [ <έκφραση> for <όνοµα1> in <iterable1> if <έκφραση_if1> \ for <όνοµα2> in <iterable2> if <έκφραση_if2> \... for <όνοµαν> in <iterableν> if <έκφραση_ifν> ] Ισοδύναμο με την τιμή της newlist μετά τις εντολές: newlist = [] for <όνοµα1> in <iterable1>: if <έκφραση_if1>: for <όνοµα2> in <iterable2>: if <έκφραση_if2>:... for <όνοµαν> in <iterableν>: if <έκφραση_ifν>: newlist = newlist + [<έκφραση>] Το if που ακολουθεί το for είναι προαιρετικό

Επεξεργασία ακολουθιών Επεξεργασία ακολουθιών με τις συναρτήσεις ανώτερου επιπέδου: map(func, iterable): απεικόνιση στοιχείων iterable με τη συνάρτηση func filter(func, iterable): φιλτράρισμα στοιχείων x του iterable όπου func(x) είναιtrue reduce(func, iterable): υπολογισμός τιμής εφαρμογής της συνάρτησης func μεταξύ όλων των στοιχείων του iterable

Επεξεργασία ακολουθιών Απεικόνιση με τη συνάρτηση map(<έκφραση>, <iterable>) Η <έκφραση> έχει ως τιμή μια συνάρτηση μιας παραμέτρου Παράδειγμα: >>> numbers = [1, -43, 8, 3, 4] >>> map(lambda x: x+1, numbers) <map object at 0x10c7dd9b0> >>> list(map(lambda x: x+1, numbers)) [2, -42, 9, 4, 5] Ισοδύναμο με >>> [x+1 for x in numbers] [2, -42, 9, 4, 5]

Επεξεργασία ακολουθιών Φιλτράρισμα με τη συνάρτηση filter(<έκφραση>, <iterable>) Η <έκφραση> έχει ως τιμή μια συνάρτηση μιας παραμέτρου Παράδειγμα: >>> numbers = [2, -42, 9, 4, 5] >>> def is_positive(x): return x >= 0 >>> filter(is_positive(x), numbers) <filter object at 0x10c7dd908> >>> list(filter(is_positive, numbers)) [2, 9, 4, 5] Ισοδύναμο με >>> [x for x in numbers if is_positive(x)] [2, 9, 4, 5]

Επεξεργασία ακολουθιών Συγκέντρωση με τη συνάρτηση reduce(<έκφραση>, <iterable>) που βρίσκεται στο module functools Η <έκφραση> έχει ως τιμή μια συνάρτηση δύο παραμέτρων Αποτίμηση της reduce(func, lst): lst[0] lst[1] lst[2] lst[3] lst[-1] func(, ) func(, ) func(, )... func(, ) τιμή της reduce(func, lst) Δηλ., η reduce(func, lst) είναι ισοδύναμη με func( func(func(lst[0], lst[1]), lst[2]), lst[-1])

Επεξεργασία ακολουθιών Παράδειγμα συγκέντρωσης με reduce >>> numbers = [2, -42, 9, 4, 5] >>> from functools import reduce >>> reduce(max, numbers) 9 >>> from operator import add >>> reduce(add, numbers) -22 Ισοδύναμα με >>> max(numbers) 9 >>> sum(numbers) -22

Επεξεργασία ακολουθιών Παράδειγμα: κατασκευή λίστας τέλειων αριθμών μικρότερων του 1000 >>> def divisors(n): isdivisor = lambda x: n % x == 0 return list(filter(isdivisor, range(1, n))) >>> def sum_of_divisors(x): from functools import reduce return reduce(add, divisors(x)) >>> isperfect = lambda n: n == sum_of_divisors(n) >>> list(filter(isperfect, range(2, 1000))) [6, 28, 496]

Τελεστές ακολουθιών Έλεγχος ιδιότητας μέλους με τελεστές in και not in: >>> 5 in [2, -1, 'a', 5, 10] True >>> 11 not in [2, -1, 'a', 5, 10] True >>> not 11 in [2, -1, 'a', 5, 10] True Γενική μορφή: <έκφραση> in <έκφραση_συνόλου> <έκφραση> not in <έκφραση_συνόλου> Τιμή τελεστή in (not in) = True εάν η τιμή της <έκφρασης> (δεν) είναι μέλος του συνόλου (container) που αποτιμάται η <έκφραση_συνόλου> container: όλοι οι τύποι που περιέχουν στοιχεία, πχ, ακολουθίες

Τελεστές ακολουθιών Τεμαχισμός (slicing) >>> ls = [1, 3, 5, -4, 6, 10] >>> ls[1:4] [3, 5, -4] >>> ls[1:4:2] [3, -4] >>> ls[:4] [1, 3, 5, -4] >>> ls[3:] [-4, 6, 10] >>> ls[:] [1, 3, 5, -4, 6, 10] >>> ls[3:-1] [-4, 6] >>> ls[3:-2] [-4] <ακολουθία>[a:b:step] Μια νέα ακολουθία που αποτελείται από τα στοιχεία της <ακολουθία> με δείκτες a, a+step, a+2*step,..., όχι πέρα του b-1 προκαθορισμένες τιμές εάν παραληφθούν ή step >= 0: a = 0, b = len(<ακολουθία>), step = 1

Τελεστές ακολουθιών Αντιστροφή φοράς >>> ls = [1, 3, 5, -4, 6, 10] >>> ls[4:1] [] >>> ls[4:1:-1] [6, -4, 5] >>> ls[4:0:-1] [6, -4, 5, 3] >>> ls[4:-7:-1] [6, -4, 5, 3, 1] >>> ls[4::-1] [6, -4, 5, 3, 1] >>> ls[::-1] [10, 6, -4, 5, 3, 1] <ακολουθία>[a:b:step] Μια νέα ακολουθία που αποτελείται από τα στοιχεία της <ακολουθία> με δείκτες a, a+step, a+2*step,...,όχι πέρα του b-1 προκαθορισμένες τιμές εάν παραληφθούν και step >= 0: a = -1, b = -len(<ακολουθία>)-1, step = 1

Αλφαριθμητικά (str)

Αλφαριθμητικά Τα αλφαριθμητικά είναι ακολουθίες >>> s = 'hello' >>> len(s) 5 >>> s[1] e >>> s[1:] ello >>> s[::-1] olleh >>> s = # κενό string >>> len(s) 0

Αλφαριθμητικά Οι τελεστές in, not in ελέγχουν για ταίριασμα τμήματος του αλφαριθμητικού >>> 'ello' in 'hello' True >>> 'ello' in ['h', 'e', 'l', 'l', 'o'] False Κατασκευαστής αλφαριθμητικού: str >>> "It's "+str(1==1)+':'+str(25+(30-13))+' days until Xmas!' "It's True:42 days until Xmas!" Κατασκευή list από str >>> list('hello') ['h', 'e', 'l', 'l', 'o']