Έχουμε δει διάφορες ακολουθιακές δομές δεδομένων. Αυτές είναι οι (α) συμβολοσειρές, (β) λίστες (γ) πλειάδες (δ) η δομή που παράγεται από την εντολή range
και άλλες.
Αυτές ονομάζονται συλλογικά <<ακολουθίες>>.
Υπάρχουν αρκετές κοινές λειτουργίες για όλες τις ακολουθίες.
Ας θεωρήσουμε ότι στο όνομα μεταβλητής seq
έχουμε είτε μία συμβολοσειρά, είτε μία πλειάδα, είτε μία λίστα.
Τότε μπορούμε να χρησιμοποιήσουμε τις ακόλουθες εντολές.
seq[i]
: i-οστό στοιχείο ακολουθίας.seq[αρχη:τελος:βημα]
: τεμαχισμός ακολουθίας.seq1 + seq2
: συνένωση ακολουθιών.n*seq
: επαναλαμβανόμενη ακολουθία n φορές.e in seq
: ελέγχει αν το e
ανήκει στην seq
(boolean).e not in seq
: ελέγχει αν το e
δεν ανήκει στην seq
(boolean).for x in seq
: διατρέχει τα στοιχεία ακολουθίας.Επίσης, έχουμε τις ακόλουθες συναρτήσεις οι οποίες παίρνουν ως όρισμα μία ακολουθία
len(seq)
: ο αριθμός των στοιχείων ακολουθίας.min(seq)
: το ελάχιστο στοιχείο ακολουθίας.max(seq)
: το μέγιστο στοιχείο ακολουθίας.Σε μία οποιοδήποτε ακολουθία μπορούμε να εφαρμόσουμε μεθόδους.
seq.index(e)
: η θέση της πρώτης εμφάνισης του στοιχείου e
στην ακολουθία.seq.count(e)
: αριθμός εμφανίσεων του στοιχείου e
στην ακολουθία.s.lower(), s.upper()
: μετατρέπει όλους τους χαρακτήρες σε πεζούς και σε κεφαλαίους αντίστοιχα.s.capitalize()
: μετατρέπει σε κεφαλαίο τον πρώτο χαρακτήρα της συμβολοσειράς (αν αυτός είναι γράμμα).s.replace(old,new)
: αντικαθιστά στην s την συμβολοσειρά old με την συμβολοσειρά new.
>>> s = "I like python"
>>> s1 = s.replace("like","love")
>>> print(s1)
I love python
>>> s2 = s1.upper()
>>> print(s2)
I LOVE PYTHON
s.upper()
;
Για συμβολοσειρές, έχουμε επίσης τις εξής μεθόδους.
s.split(d)
: χωρίζει την s όπου υπάρχει το d και παράγει μία λίστα με το αποτέλεσμα.s.partition(d)
: χωρίζει την s εκεί που θα βρει την συμβολοσειρά d και επιστρέφει τρεις συμβολοσειρές: το κομμάτι της s πριν την d, την d και το κομμάτι της s μετά την d.
>>> line = input("Give numbers separated by comma: ")
Give numbers separated by comma: 1.2, 2.3, 3.14, 6
>>> strList = line.split(',')
>>> strList
['1.2', ' 2.3', ' 3.14', ' 6']
>>> numList = []
>>> for e in strList:
numList.append(float(e))
>>> numList
[1.2, 2.3, 3.14, 6.0]
>>> s = input("Give an expression for a sum: ")
Give an expression for a sum: 1.2+4.5+6.4+14.8
>>> L = s.split("+")
>>> print(L)
['1.2', '4.5', '6.4', '14.8']
>>> summ = 0
>>> for e in L:
... summ += float(e)
...
>>> print(summ)
26.900000000000002
Για να βρούμε την θέση στοιχείου σε συμβολοσειρά έχουμε τις εξής μεθόδους
s.index(d)
: θέση του στοιχείου d στην s.s.find(d)
: θέση του στοιχείου d στην s.
>>> s = "abcdefghijk"
>>> s.find("c")
2
>>> s.index("c")
2
Οι δύο αυτές μέθοδοι όμως συμπεριφέρονται διαφορετικά όταν το ζητούμενο στοιχείο δεν υπάρχει στην συμβολοσειρά.
>>> s.find("z")
-1
>>> s.index("z")
Traceback (most recent call last):
File "", line 1, in
ValueError: substring not found
Έχουμε επίσης τις μεθόδους
s.isalpha()
: ελέχγει αν όλοι οι χαρακτήρες σε μία συμβολοσειρά είναι γράμματα.s.isdigit()
: ελέχγει αν όλοι οι χαρακτήρες σε μία συμβολοσειρά είναι αριθμητικά ψηφία.Επίσης τις μεθόδους (χρήσιμες για το formatting των strings που θα δούμε αργότερα)
s.strip()
: αφαιρεί τους κενούς χαρακτήρες από την αρχή και το τέλος της s.s.lstrip(), s.rstrip()
: αφαιρεί τους κενούς χαρακτήρες από την αρχή (αριστερά) ή από το τέλος (δεξιά) της s αντίστοιχα.s.center(πλατος), s.ljust(πλατος[,χαρακτήρας]), s.rjust(πλατος[,χαρακτήρας])
s.endwith(συμβολοσειρα), s.startwith(συμβολοσειρα)
Μπορούμε να ενώσουμε τα στοιχεία μίας ακολουθίας όταν αυτά είναι συμβολοσειρές.
Η μέθοδος join
παίρνει μία ακολουθία της οποίας τα στοιχεία είναι συμβολοσειρές και επιστρέφει μία συμβολοσειρά.
ch.join(s)
: μεταξύ των διαδοχικών χαρακτήρων της συμβολοσειράς s θα παρεμβληθεί η συμβολοσειρά ch.ch.join(L)
: μεταξύ των διαδοχικών στοιχείων της λίστας συμβολοσειρών L θα παρεμβληθεί η συμβολοσειρά ch.
>>> s = '12345'
>>> '-'.join(s)
'1-2-3-4-5'
>>> L = ['31','12','2017']
>>> '-'.join(L)
'31-12-2017'
>>> L = ['Once','Upon','A','Time']
>>> ' '.join(L)
'Once Upon A Time'
>>> ''.join(L)
'OnceUponATime'
comprehensionList = [εκφραση for μεταβλητη in ακολουθια]
>>> squares = [i**2 for i in range(11)]
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
numList = [float(e) for e in strList]