Μάθημα : Προγραμματισμός Υπολογιστών Γ' ετος 2025-2026

Κωδικός : 4540050176

4540050176  -  ΒΑΣΙΛΕΙΟΣ ΜΠΙΤΟΣ

Ενότητες - Λίστες

Λίστες

Η λίστα είναι μια διατεταγμένη ακολουθία αντικειμένων, όχι απαραίτητα του ίδιου τύπου και αποτελεί τη βασική δομή δεδομένων της Python. Η λίστα, σε αντίθεση με τη συμβολοσειρά , είναι μια δυναμική δομή στην οποία μπορούμε να προσθέτουμε ή να αφαιρούμε στοιχεία (mutable).
o Οι τιμές που θα περιέχονται στη λίστα εσωκλείονται σε αγκύλες [ ] και χωρίζονται με κόμμα.
o Οι τιμές καταχωρούνται ακολουθιακά, η μια μετά την άλλη.
Παραδείγματα:
numera = [6,5,8,13,,21,15,3]
poleis= ['Τρίκαλα', 'Καρδίτσα', 'Λάρισα','Βόλος']

keni = [ ]
Πρόσβαση σε στοιχείο της λίστας
o Αποκτούμε πρόσβαση σε ένα στοιχείο της λίστας γράφοντας το όνομα της λίστας και τη θέση του στοιχείου μέσα σε [ ].
o Η αρίθμηση των θέσεων ξεκινάει πάντα από το 0 και φτάνει μέχρι το πλήθος των στοιχείων της λίστας μειωμένο κατά 1.
o Εναλλακτικά, η αρίθμηση των θέσεων γίνεται κι αντίστροφα, με την τελευταία θέση να αντιστοιχεί στον αριθμό -1.
o Μέσα στις αγκύλες μπορούμε να γράψουμε οποιαδήποτε ακέραια έκφραση.
o Σε περίπτωση που αναφερθούμε σε μια θέση που δεν υπάρχει στη λίστα, δηλαδή σε έναν αριθμό μεγαλύτερο ή ίσο με το πλήθος των στοιχείων της τότε προκύπτει σφάλμα.
Παραδείγματα:
numera[3] = 1, δίνει στο τέταρτο στοιχείο την τιμή 1
numera[-1] = 89, δίνει στο τελευταίο στοιχείο την τιμή 89
print(numera[0]), εμφανίζει το πρώτο στοιχείο της λίστας
Πλήθος στοιχείων
Συνάρτηση len

Επιστρέφει το πλήθος των στοιχείων μιας  λίστας.
Παράδειγμα:
print  len(numera)
7
Απαρίθμηση στοιχείων λίστας
Eντολή for
Η εντολή for είναι μια εντολή επανάληψης που διατρέχει τα στοιχεία μιας ακολουθίας τιμών, όπως μια λίστα, με τη σειρά που εμφανίζονται.
o Σε κάθε επανάληψη η τιμή του επόμενου στοιχείου της ακολουθίας ανατίθεται σε μια μεταβλητή απαρίθμησης που χρησιμοποιούμε στην for.
Παράδειγμα:
for i in numera:
print(i)

Οταν θέλουμε να διατρέξουμε τα στοιχεία μιας λίστας χρησιμοποιούμε for i in List:

Αν θέλουμε να βρούμε τη θέση του στοιχείου στην λίστα χρησιμοποιούμε

for i in range (len(list)):
Πράξεις
Τελεστής διαμέρισης :
Δημιουργεί μια νέα λίστα που αντιστοιχεί σε ένα «τεμαχισμένο» τμήμα της αρχικής
o Για να τεμαχίσουμε μια λίστα γράφουμε μέσα σε αγκύλες [ ] τρεις αριθμούς: την αρχική θέση του τεμαχισμού, τη θέση τερματισμού του τεμαχισμού (που δεν περιλαμβάνεται στο τελικό τμήμα) και ανά πόσα στοιχεία θα περιλαμβάνονται στο τεμαχισμένο τμήμα, ξεκινώντας από την αρχική θέση.
o Αν παραλείψουμε την αρχική θέση, ο τεμαχισμός ξεκινάει από το πρώτο στοιχείο της λίστας.
o Αν παραλείψουμε την τελική θέση τότε ο τεμαχισμός φτάνει μέχρι το τέλος της λίστας.
o Αν παραλείψουμε το βήμα τότε παίρνει την τιμή +1.
Παραδείγματα:
numera[1:4], δημιουργεί μια νέα λίστα που περιέχει τα στοιχεία στις θέσεις 1 έως και 3 της αρχικής λίστας

numera[::2], ξεκινώντας από την αρχή της λίστας, δημιουργεί μια νέα λίστα που περιέχει τα στοιχεία της αρχικής που βρίσκονται σε ζυγές θέσεις

numera[::-1], δημιουργεί νέα λίστα, αντίστροφη της αρχικής

Συνένωση και πολλαπλασιασμός
Τελεστές +, *
Ο τελεστής + (συνένωση) χρησιμοποιείται ανάμεσα σε δύο λίστες και δημιουργεί μια νέα λίστα που περιέχει όλα τα στοιχεία των αρχικών.
Ο τελεστής * έχει ως αποτέλεσμα τη δημιουργία μιας νέας λίστας που περιέχει πολλές φορές τα στοιχεία της αρχικής.
num = [1,2,3] + [4,5,6], το num θα περιέχει τα [1,2,3,4,5,6]
num = [1,2,3] * 3, το num περιέχει τα [1,2,3,1,2,3,1,2,3]
Έλεγχος ύπαρξης τιμής σε λίστα
Τελεστής in
Ελέγχει αν η τιμή βρίσκεται στη λίστα και επιστρέφει αντίστοιχα την τιμή True ή False.
if 21 in numera:  print True

else: print False

Μέθοδοι
Οι λίστες, όπως και οι συμβολοσειρές, διαθέτουν μεγάλη ποικιλία μεθόδων, η χρήση των οποίων μπορεί να επεκτείνει, σε μεγάλο βαθμό, τη λειτουργικότητά τους. Εμείς  θα χρησιμοποιήσουμε μόνο τις παρακάτω μεθόδους.
Προσθήκη νέου στοιχείου
Μέθοδος append()
Προσθέτει ένα νέο στοιχείο στο τέλος της λίστας.
numera.append(8)
poleis.append('lamia')

Αφαίρεση στοιχείου
Μέθοδος pop()
Αφαιρεί το τελευταίο στοιχείο της λίστας 

numera.pop()

Μέθοδος insert()
Εισάγει ένα νέο στοιχείο σε οποιαδήποτε θέση της λίστας.
Η θέση και το στοιχείο εισαγωγής δίνονται ως παράμετροι.
poleis.insert(1, 'kalampaka'), εισάγει την τιμή 'kalampaka' στη 2η θέση της λίστας


Παραδείγματα για μελέτη

Με κίτρινο εμφανίζεται το αποτέλεσμα της ετολής στην οθόνη. Για βοήθεια εμφανίζεται η lexi με την αρίθμηση τωνθέσεων των γραμμάτων από κάτω:

'a'  'b'  'c'  'd'  'e'
 0    1    2    3    4

L=['a','b','c','d','e']
print len(L)   5
print L[2]   c
print L[2]+L[4]  ce
print L[len(L)-1]  e
print L[4]+L[3]+L[2]  edc
print list('Anna')   ['A','n','n','a']
print L + [10,20]    ['a','b','c','d','e',10,20]
print [-5, 3.14] + L   [-5, 3.14,'a','b','c','d','e',10,20]
print L + ['f']    ['a','b','c','d','e','f']
print L[1:3] ['b', 'c']
print L[5:8] []
print L[3:len(L)-1] ['d']
print L[4:2]   []
print L[50:500]   []
print L[:2]   ['a','b']
print L[2:]   ['c','d','e']
print L[:3]+L[3:] ['a','b','c','d','e']
print L[:] ['a','b','c','d','e']

N = [-1, 2, 10]
print N[0]+N[2]   9
N[1] = N[0] + N[2]
print N   [-1,9,10]

L=['a','b','c','d','e']
M = L
print M   ['a','b','c','d','e']
L[1]=10
M[3]=-2
print L, M    ['a',10,'c',-2,'e']  ['a',10,'c',-2,'e']

L=['a','b','c','d','e']
M = L[:]
print M  ['a','b','c','d','e']
L[1]=10
M[3]=-2
print L, M    ['a',10,'c','d','e']  ['a','b','c',-2,'e']

L=['a','b','c','d','e']
print L.pop(), L    'e'  ['a','b','c','d']
print L.pop(2), L    'c'  ['a','b','d']
print L.pop(0), L    'a'  ['b','d']

L=['a','b','c','d','e']
L.append('Z')
print L   ['a','b','c','d','e','Z']
L = L + ['A', 'B']
print L  ['a','b','c','d','e','Z','A','B']
L = ['A','B'] + L
print L ['A','B','a','b','c','d','e','Z',"A','B']

L=['a','b','c','d','e']
L.insert(2,'X')
print L ['a','b','X','c','d','e']
L.insert(0,'A')
print L ['A','a','b','X','c','d','e']
L.insert(len(L),'Z')
print L ['A','a','b','X','c','d','e','Z']
L.insert(1000,'ZZ')
print L ['A','a','b','X','c','d','e','Z','ZZ']

Προσπέλαση στοιχείων λίστας
Τα στοιχεία εμφανίζονται στην οθόνη

Α' Λύση (όταν δεν χρειάζεται να γνωρίζουμε την θέση του στοιχείου)

L=range(0,101,10)
for stx in L:
    print stx

Β' Λύση (όταν χρειάζεται να γνωρίζουμε την θέση του στοιχείου)

L=range(0,101,10)
for i in range(len(L)):
    print L[i]

Αναζήτηση στοιχείου σε λίστα

def einaiStinLista(x,L):
    for stx in L:
        if stx == x:
            return True
    return False

Μέσος όρος στοιχείων λίστας

def meosOros(L):
    if len(L) == 0:
        return None
    s = 0
    for st in L:
        s += st
    return 1.0 * s / len(L)

Μέγιστο στοιχείο λίστας

 

Α Λύση Επιστρέφει τον μέγιστο της λίστας

def megistosListas(L):
      megistos=L[0]
      for stx in L:
           if stx >= megistos:
                megistos = stx
     return megistos

Β Λύση Επιστρέφει την θέση του μέγιστου της λίστας

def thesiMegistoyListas(L):
      thesi=0
      for i in range(1,len(L)):
            if L[i] >= L[thesi]:
                 thesi = i
      return thesi

Ελάχιστο στοιχείο λίστας

Α Λύση Επιστρέφει τον ελάχιστο της λίστας

def elaxistosListas(L):
      elaxistos=L[0]
      for stx in L:
           if stx <= elaxistos:
                elaxistos = stx
     return megistos

Α Λύση Επιστρέφει του ελάχιστου της λίστας

def thesiElaxistoyListas(L):
      thesi=0
      for i in range(1,len(L)):
            if L[i] <= L[thesi]:
                 thesi = i
      return thesi

Διαγραφή στοιχείων από Λίστα

Προσοχή! Γίνεται μόνο με χρήση του while (To for συνήθως προκαλεί λάθος χρήσης δείκτη έξω από τα όριο - index out or range)

def diagrafiApoLista(x, L)# Διαγράφει το στοιχείο από την λίστα όλες τις φορές υπάρχει
    i=0
    while i<len(L):
          if x == L[i]:
               L.pop(i)
          else:
               i +=1
     return