Λίστες
Πολλές τιμές σε μία μεταβλητή: δείκτες, append και len.
35 λεπτά
Θα μάθεις να
- Να δημιουργείς λίστες και να διαβάζεις ή να αλλάζεις στοιχεία τους με δείκτη που ξεκινά από το 0.
- Να χρησιμοποιείς τα len και append και τον αρνητικό δείκτη -1.
- Να διατρέχεις μια λίστα με for, είτε στοιχείο στοιχείο είτε με range(len(...)).
- Να βρίσκεις με βρόχο άθροισμα, μέσο όρο και μέγιστο μιας λίστας.
Γιατί χρειαζόμαστε λίστες
Θέλεις να κρατήσεις τους βαθμούς των μαθητών ενός τμήματος. Με όσα ξέρεις ως τώρα, θα χρειαζόσουν μεταβλητές: v1, v2, …, v25. Και για να βρεις τον μέσο όρο, μια πρόσθεση με όρους, που θα έπρεπε να την ξαναγράψεις για το τμήμα με τους .
Η λύση είναι η λίστα (list): μία μεταβλητή που κρατά πολλές τιμές στη σειρά. Στον ψευδοκώδικα της Β΄ αυτή η ιδέα λεγόταν πίνακας.
vathmoi = [17, 12, 19, 15, 18]
poleis = ["Αθήνα", "Πάτρα", "Βόλος"]
kenh = []
Οι τιμές μπαίνουν μέσα σε αγκύλες [ ], χωρισμένες με κόμμα. Κάθε τιμή λέγεται στοιχείο της λίστας. Η kenh είναι μια κενή λίστα, χωρίς κανένα στοιχείο ακόμη.
Δείκτες: η θέση κάθε στοιχείου
Σε κάθε στοιχείο φτάνεις με τη θέση του, τον δείκτη (index), μέσα σε αγκύλες.
| Δείκτης | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| Τιμή | 17 | 12 | 19 | 15 | 18 |
| Από το τέλος | -5 | -4 | -3 | -2 | -1 |
print(vathmoi[0], vathmoi[2], vathmoi[-1], len(vathmoi))
17 19 18 5
Ο αρνητικός δείκτης μετρά από το τέλος: το -1 είναι το τελευταίο στοιχείο, το -2 το προτελευταίο. Είναι πολύ βολικό όταν δεν θέλεις να υπολογίσεις το μήκος.
Η συνάρτηση len (length, μήκος) επιστρέφει πόσα στοιχεία έχει η λίστα.
Αλλάζω και προσθέτω στοιχεία
Ένα στοιχείο αλλάζει με εκχώρηση στη θέση του:
vathmoi[1] = 14
print(vathmoi)
[17, 14, 19, 15, 18]
Η μέθοδος append προσθέτει ένα στοιχείο στο τέλος της λίστας, που έτσι μεγαλώνει κατά ένα:
vathmoi.append(20)
print(vathmoi, len(vathmoi))
[17, 14, 19, 15, 18, 20] 6
Πρόσεξε τη σύνταξη: vathmoi.append(20), με τελεία ανάμεσα στο όνομα της λίστας και στο append. Η append είναι «μέθοδος» της λίστας: μια εντολή που ανήκει στη λίστα και την αλλάζει.
Με append μέσα σε βρόχο χτίζεις μια λίστα από το μηδέν:
tetragona = []
for i in range(1, 6):
tetragona.append(i * i)
print(tetragona)
[1, 4, 9, 16, 25]
Διατρέχω μια λίστα
Υπάρχουν δύο τρόποι να επισκεφθείς όλα τα στοιχεία.
Στοιχείο στοιχείο. Η μεταβλητή του for παίρνει με τη σειρά κάθε τιμή της λίστας:
for poli in poleis:
print(poli)
Με δείκτη. Όταν χρειάζεσαι και τη θέση, διατρέχεις τους δείκτες με range(len(...)):
for i in range(len(poleis)):
print(i, poleis[i])
0 Αθήνα
1 Πάτρα
2 Βόλος
Ο πρώτος τρόπος είναι πιο απλός. Ο δεύτερος χρειάζεται όταν θέλεις να αλλάξεις στοιχεία ή να συγκρίνεις ένα στοιχείο με τον γείτονά του, όπως θα κάνεις στην ταξινόμηση.
Έτοιμα εργαλεία
Η Python έχει έτοιμες συναρτήσεις για τα πιο συνηθισμένα:
| Γράφεις | Επιστρέφει | Για [17, 14, 19, 15, 18, 20] |
|---|---|---|
sum(vathmoi) | το άθροισμα | 103 |
max(vathmoi) | το μεγαλύτερο | 20 |
min(vathmoi) | το μικρότερο | 14 |
19 in vathmoi | αν υπάρχει η τιμή | True |
Είναι χρήσιμο να ξέρεις να τα γράφεις και μόνος σου με βρόχο. Δεν είναι άσκηση επίδειξης: είναι ο τρόπος να καταλάβεις τι κάνουν, και η βάση των αλγορίθμων αναζήτησης και ταξινόμησης στα επόμενα μαθήματα.
Λυμένα παραδείγματα
Παράδειγμα 1
Δίνονται οι βαθμοί [17, 12, 19, 15, 18]. Βρες τον μέσο όρο και πόσοι μαθητές είναι πάνω από αυτόν.
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Παράδειγμα 2
Βρες τη μέγιστη θερμοκρασία της λίστας [14, 17, 21, 19, 23, 18] χωρίς τη max.
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Ασκήσεις
Πρώτα ερωτήσεις με επιλογές: διαλέγεις, πατάς «Έλεγξε» και μαθαίνεις αμέσως αν το βρήκες και γιατί. Στο τέλος, λίγες ασκήσεις χωρίς επιλογές — εκεί κρύβεται μόνο η απάντηση.
Τα κατάφερες;
- Να δημιουργείς λίστες και να διαβάζεις ή να αλλάζεις στοιχεία τους με δείκτη που ξεκινά από το 0.
- Να χρησιμοποιείς τα len και append και τον αρνητικό δείκτη -1.
- Να διατρέχεις μια λίστα με for, είτε στοιχείο στοιχείο είτε με range(len(...)).
- Να βρίσκεις με βρόχο άθροισμα, μέσο όρο και μέγιστο μιας λίστας.
Λύσε τις ασκήσεις πιο πάνω και θα δεις εδώ πού στέκεσαι.