Σημειώσεις

Προηγούμενο

Επόμενο

Ακολουθίες

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

Υπάρχουν αρκετές κοινές λειτουργίες για όλες τις ακολουθίες. Ας θεωρήσουμε ότι στο όνομα μεταβλητής seq έχουμε είτε μία συμβολοσειρά, είτε μία πλειάδα, είτε μία λίστα. Τότε μπορούμε να χρησιμοποιήσουμε τις ακόλουθες εντολές.

Επίσης, έχουμε τις ακόλουθες συναρτήσεις οι οποίες παίρνουν ως όρισμα μία ακολουθία

Σε μία οποιοδήποτε ακολουθία μπορούμε να εφαρμόσουμε μεθόδους.

Συμβολοσειρές και μέθοδοι

Ειδικότερα, αν s είναι μία συμβολοσειρά, έχουμε και τις εξής μεθόδους.

Παράδειγμα.


>>> s = "I like python"
>>> s1 = s.replace("like","love")
>>> print(s1)
I love python
>>> s2 = s1.upper()
>>> print(s2)
I LOVE PYTHON

Ερώτηση κατανόησης.

Η συμβολοσειρά s τροποποιείται ή όχι μετά την εφορμογή της μεθόδου s.upper();

Για συμβολοσειρές, έχουμε επίσης τις εξής μεθόδους.

Παράδειγμα.

Θα διαβάσουμε σειρά αριθμών από το πληκτρολόγιο και θα τους καταχωρήσουμε σε μία λίστα ως floats.


>>> 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 = "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

Έχουμε επίσης τις μεθόδους

Επίσης τις μεθόδους (χρήσιμες για το formatting των strings που θα δούμε αργότερα)

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

Παράδειγμα.


>>> 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'

Λίστες

List comprehension (Υπολογιζόμενη λίστα).

Έχουμε την ακόλουθη μέθοδο δημιουργίας μιας λίστας.

comprehensionList = [εκφραση for μεταβλητη in ακολουθια]


>>> squares = [i**2 for i in range(11)]
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Παράδειγμα.

Χρειαστήκαμε σε προηγούμενο παράδειγμα να μετατρέψουμε λίστα strings σε floats. Για να μετατρέψουμε την λίστα των strings σε λίστα floats μπορούμε να χρησιμοποιήσουμε υπολογιζόμενη λίστα (list comprehension):


numList = [float(e) for e in strList]

Μελέτη

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

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