Πλειάδες (tuples)

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

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


>>> info = ('Nick',22)
>>> cities = ('Agios','Heraklion','Rethymno','Chania')

Μπορούμε να δώσουμε πολλές τιμές σε μία μεταβλητή, οπότε αυτή είναι μία πλειάδα:


>>> t1 = 1,2,'three'
>>> print(t1)
(1, 2, 'three')

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


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

slicing: Μπορούμε να ανακτήσουμε ένα τμήμα της πλειάδας χρησιμοποιώντας ένα εύρος δεικτών. Το αποτέλεσμα είναι μία νέα πλειάδα.


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

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

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


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

καθώς επίσης και του πολλαπλασιασμού (*):


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

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


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

Ειδικές περιπτώσεις πλειάδων

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


>>> t = ()

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


>>> t = (1,)

Παράδειγμα. Βρείτε τους διαιρέτες ενός ακεραίου.


def findDivisors(n):
    divisors = ()
    for i in range(1,n+1):
        if n%i == 0: divisors = divisors + (i,)
    return divisors

x = 20
result = findDivisors(x)
print(result)

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

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

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

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


>>> 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$ εκτοξεύεται προς τα επάνω με ταχύτητα $v_0$. Βρείτε την ταχύτητα και θέση του για διαδοχικούς χρόνους.


import math

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

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

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


t1 = (1,3,6,8)

Μπορούμε να πάρουμε:

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

Μελέτη

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

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