Μετάβαση στο περιεχόμενο

Λίστες

Πολλές τιμές σε μία μεταβλητή: δείκτες, append και len.

35 λεπτά

Θα μάθεις να

  1. Να δημιουργείς λίστες και να διαβάζεις ή να αλλάζεις στοιχεία τους με δείκτη που ξεκινά από το 0.
  2. Να χρησιμοποιείς τα len και append και τον αρνητικό δείκτη -1.
  3. Να διατρέχεις μια λίστα με for, είτε στοιχείο στοιχείο είτε με range(len(...)).
  4. Να βρίσκεις με βρόχο άθροισμα, μέσο όρο και μέγιστο μιας λίστας.

Γιατί χρειαζόμαστε λίστες

Θέλεις να κρατήσεις τους βαθμούς των 2525 μαθητών ενός τμήματος. Με όσα ξέρεις ως τώρα, θα χρειαζόσουν 2525 μεταβλητές: v1, v2, …, v25. Και για να βρεις τον μέσο όρο, μια πρόσθεση με 2525 όρους, που θα έπρεπε να την ξαναγράψεις για το τμήμα με τους 2727.

Η λύση είναι η λίστα (list): μία μεταβλητή που κρατά πολλές τιμές στη σειρά. Στον ψευδοκώδικα της Β΄ αυτή η ιδέα λεγόταν πίνακας.

vathmoi = [17, 12, 19, 15, 18]
poleis = ["Αθήνα", "Πάτρα", "Βόλος"]
kenh = []

Οι τιμές μπαίνουν μέσα σε αγκύλες [ ], χωρισμένες με κόμμα. Κάθε τιμή λέγεται στοιχείο της λίστας. Η kenh είναι μια κενή λίστα, χωρίς κανένα στοιχείο ακόμη.

Δείκτες: η θέση κάθε στοιχείου

Σε κάθε στοιχείο φτάνεις με τη θέση του, τον δείκτη (index), μέσα σε αγκύλες.

Δείκτης01234
Τιμή1712191518
Από το τέλος-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.

Δοκίμασέ το πρώτα. Μετά δες τη λύση.

Ασκήσεις

Πρώτα ερωτήσεις με επιλογές: διαλέγεις, πατάς «Έλεγξε» και μαθαίνεις αμέσως αν το βρήκες και γιατί. Στο τέλος, λίγες ασκήσεις χωρίς επιλογές — εκεί κρύβεται μόνο η απάντηση.

Πολλαπλή επιλογήΆσκηση 1 από 14
Με a = [5, 8, 2], τι τυπώνει η print(a[1]);

Τα κατάφερες;

  • Να δημιουργείς λίστες και να διαβάζεις ή να αλλάζεις στοιχεία τους με δείκτη που ξεκινά από το 0.
  • Να χρησιμοποιείς τα len και append και τον αρνητικό δείκτη -1.
  • Να διατρέχεις μια λίστα με for, είτε στοιχείο στοιχείο είτε με range(len(...)).
  • Να βρίσκεις με βρόχο άθροισμα, μέσο όρο και μέγιστο μιας λίστας.

Λύσε τις ασκήσεις πιο πάνω και θα δεις εδώ πού στέκεσαι.