Σημειώσεις

Προηγούμενο

Επόμενο

Πλειάδες (tuples)

Ομαδοποίηση στοιχείων

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

Θα βάλουμε σε μία μεταβλητή το όνομα και την ηλικία ενός προσώπου.


>>> info = ('Nick',22)

Για να ορίσουμε έναν κύκλο χρειαζόμαστε το κέντρο και την ακτίνα του. Θα ομαδοποιήσουμε τις δύο συντεταγμένες του κέντρου, έστω (1.5,2), και την ακτίνα, έστω 5.


>>> circ = (1.5,2.0,5.0)

Ένας ακόμα τρόπος να ορίσουμε μία πλειάδα είναι να δώσουμε πολλές τιμές σε μία μεταβλητή, οπότε αυτή θεωρείται από την python μία μεταβλητή πλειάδας.


>>> t1 = 1,2,'three'
>>> print(t1)
(1, 2, 'three')
>>> type(t1)
<class 'tuple'>

Βασικές λειτουργίες

Δεικτοδότηση:

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


>>> t1[1]
2
>>> t1[-1]
'three'

Τεμαχισμός:

Μπορούμε να ανακτήσουμε ένα τμήμα της πλειάδας χρησιμοποιώντας ένα εύρος δεικτών. Το αποτέλεσμα είναι μία νέα πλειάδα. (Η δεικτοδότηση είναι ακριβώς όπως στις συμβολοσειρές και στις λίστες.)


>>> t1[0:2]
(1, 2)

Πρόσθεση.

Μπορούμε να χρησιμοποιήσουμε τo σύμβολο της πρόσθεσης (+) για να ενώσουμε δύο πλειάδες:


>>> t1 = (1,2,'three')
>>> t2 = ('a','b')
>>> t1 + t2
(1, 2, 'three', 'a', 'b')

Πολλαπλασιαμός.

Επίσης μπορούμε να χρησιμοποιήσουμε τo σύμβολο του πολλαπλασιασμού (*) για να πάρουμε μία σειρά αντιγράφων μίας πλειάδας.


>>> 2*t1
(1, 2, 'three', 1, 2, 'three')

Κάποιες περιπτώσεις πλειάδων

Μία πλειάδα μπορεί να έχει ως στοιχεία πλειάδες.


>>> t  = (t1,t2)
>>> print(t)
((1, 2, 'three'), ('a', 'b'))

Παράδειγμα.

Ας ορίσουμε μία πλειάδα για το κέντρο κύκλου και μία πλειάδα για το κέντρο και την ακτίνα του.


>>> c = (1.5,2.0)
>>> r = 5.0
>>> circ = (c,r)
>>> print(circ)
((1.5, 2.0), 5.0)

Έχουμε την κενή πλειάδα.


>>> t = ()

Έχουμε την πλειάδα με ένα στοιχείο. Προσέξτε ότι το κόμμα στο τέλος της πλειάδας είναι αναγκαίο!


>>> t = (1,)
>>> 3*t
(1, 1, 1)

Μη-μεταλλαξιμότητα

Οι πλειάδες δεν είναι μεταλλάξιμες. Δηλαδή, δεν μπορούμε να αλλάξουμε την τιμή σε ένα (ή ορισμένα) από τα στοιχεία μίας πλειάδας.

Θυμηθείτε ότι και οι συμβολοσειρές είναι μη-μεταλλάξιμος τύπος. Αντιθέτως, οι λίστες είναι μεταλλάξιμος τύπος, δηλαδή, μπορούμε να προσθέσουμε, αφαιρέσουμε ή να αλλάξουμε στοιχεία μίας λίστας.

Μπορούμε να σβήσουμε μία πλειάδα με την εντολή del.


>>> t = (1,2,3)
>>> print(t)
(1, 2, 3)
>>> del t
>>> print(t)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 't' is not defined

Πολλαπλές αναθέσεις τιμών

Μπορούμε να μεταφέρουμε τις τιμές μίας πλειάδας μήκους n σε ισάριθμες μεταβλητές (αυτό ονομάζεται unpacking).


>>> t = (1, 4, 8)
>>> x,y,z = t
>>> print(x)
>>> 1
>>> print(x,y,z)
1 4 8

Μπορούμε να δώσουμε τιμές σε σειρά μεταβλητών με μία εντολή (για το σκοπό αυτόν χρησιμοποιούμε με άμεσο ή έμεσο τρόπο πλειάδες).


>>> x,y,z = (1, 4, 8)
>>> print(x)
>>> 1
>>> print(x,y,z)
1 4 8

Συναρτήσεις οι οποίες επιστρέφουν πολλαπλές τιμές

Παράδειγμα.

Σώμα μάζας m=1 εκτοξεύεται προς τα επάνω με ταχύτητα v0. Βρείτε την ταχύτητα και θέση του σε χρόνο t=1.

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


def y(t):
    return v0*t - 0.5*g*t**2

def v(t):
    return v0 - g*t
    
    
g  = 10.0
v0 = 20.0
t = 1.0
result = (y(t),v(t))

Ας δούμε την περίπτωση που μία συνάρτηση επιστρέφει περισσότερα από ένα αποτελέσματα. Θα μπορούσαμε, για παράδειγμα, να ζητήσουμε την θέση και την ταχύτητα του σώματος να δίνονται από μία μόνο συνάρτηση. Τότε αυτά επιστρέφονται ως πλειάδα (μπαίνουν στην εντολή return ως πλειάδα).

Παράδειγμα.

Σώμα μάζας m=1 εκτοξεύεται προς τα επάνω με ταχύτητα v0. Βρείτε την ταχύτητα και θέση του για διαδοχικούς χρόνους.


def fallingParticle(t):
    position = v0*t - 0.5*g*t**2
    velocity = v0 - g*t
    return position,velocity

g  = 10.0
v0 = 20.0
time = 0.0
while time < 2.0:
    y,v = fallingParticle(time)
    print(time,y,v)
    time += 0.2

Συναρτήσεις για πλειάδες

Άσκηση.

Κατασκευάστε μία πλειάδα η οποία θα περιέχει την ακολουθία αριθμών Fibonacci $F_i, i=1,\ldots, n$ για έναν θετικό ακέραιο n (την οποία θα εισάγετε όταν εκτελείται το πρόγραμμα).

Μελέτη

Βιβλιογραφία

  1. J.V. Guttag, Υπολογισμοί και προγραμματισμός με την python (Παράγραφος 5.1).
  2. Δημήτριος Καρολίδης, Μαθαίνετε εύκολα python (Παράγραφος 4.3) (Εκδόσεις Καρολίδη, 2016).
  3. Κ. Μαγκούτης, Χ. Νικολάου, Εισαγωγή στον αντικειμενοστραφή προγραμματισμό με Python, (Αποθετήριο "Κάλλιπος", 2016) - Κεφάλαιο 6. Συμβολοσειρές, λίστες, πλειάδες, λεξικά.