Τρίτη 7 Μαρτίου 2023

Δομές Δεδομένων - Λίστες

 

Οι λίστες είναι μια διατεταγμένη ακολουθία από αντικείμενα που μπορεί να είναι του ίδιου ή και διαφορετικών τύπων:

Vathmoi=[12,14,18,19,13]

days=['Mon','Tue','Wed','Thu','Fri','Sat','Sun']

L=['patission',296,True,3.14]

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

Όπως και στις συμβολοσειρές, σε κάθε στοιχείο μπορεί να αντιστοιχηθεί ένας αριθμός:

Vathmoi[0] είναι το 12, days[6] είναι το ‘Sun’ κ.ο.κ.

Το πλήθος των στοιχείων της λίστας δίνεται από την len(). Παράδειγμα:

>>> len(days)

7

Και πάλι χρησιμοποιείται ο υπαρξιακός τελεστής in και ο τελεστής διαμέρησης “:”

>>> 'Mon' in days

True

>>> print days[4:len(days)]

['Fri', 'Sat', 'Sun']

print days[:3] #ίδιο με print days[0:3]

['Mon', 'Tue', 'Wed']

  • Μπορούμε να δημιουργήσουμε μία κενή λίστα, δηλαδή χωρίς αρχικές τιμές. Παράδειγμα: L=[]

  • Στην συνέχεια με την μέθοδο append, στέλνουμε κάθε φορά στο τέλος της λίστας ένα νέο στοιχείο:

>>> L=[]

>>> L.append(12)

>>> L.append(14)

>>> L.append(18)

>>> print L

[12, 14, 18]

Φυσικά, μπορούμε να κάνουμε append τιμές που διαβάσαμε με input:

>>> S=[]

>>> for i in range(3):

x=input('Δώσε αριθμό: ')

S.append(x)

Δώσε αριθμό: 1

Δώσε αριθμό: 2

Δώσε αριθμό: 3

>>> print S

[1, 2, 3]

  • Με την μέθοδο insert εισάγεται ένα νέο στοιχείο στην θέση που γράφουμε:

>>> S.insert(2,5) #εισάγεται στην θέση S[2] το 5 και “σπρώχνει” δεξιά το 3

>>> print S

[1, 2, 5, 3]

  • Η μέθοδος pop αφαιρεί το στοιχείο στη θέση που γράφουμε. Παράδειγμα, pop(0) αφαιρεί το πρώτο στοιχείο. Αν δεν βάλουμε αριθμό, αφαιρεί το τελευταίο.

>>> days.pop()

'Sun'

>>> print days

['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']

>>> days.pop(3)

'Thu'

>>> print days

['Mon', 'Tue', 'Wed', 'Fri', 'Sat']

  • Μπορούμε επίσης να τροποποιήσουμε ένα ή περισσότερα στοιχεία της λίστας:

>>> print L

[12, 14, 18]

>>> L[1]=100

>>> print L

[12, 100, 18]


  • Με τον τελεστή : μπορούμε να κάνουμε ένα αντίγραφο της λίστας:

>>> print L

[12, 100, 18]

>>> K=L[:]

>>> print K

[12, 100, 18]

Αυτό ΔΕΝ ισχύει στις συμβολοσειρές!

Αν θέλουμε Κ και L να δείχνουν στην ίδια λίστα γράφουμε Κ=L, οπότε οι όποιες αλλαγές επηρεάζουν και Κ και L.

Μπορούμε να δημιουργήσουμε αντίγραφο προσθέτοντας την κενή:

>>> G=L+[]

>>> print G

[12, 100, 18]

>>> print L

[12, 100, 18]


H εντολή L=L+x κάνει το ίδιο με την L.append(x), δηλαδή προσθέτει ένα στοιχείο στο τέλος της L. Αλλά η πρώτη εντολή κάθε φορά δημιουργεί μια καινούργια λίστα, οπότε έχει μεγάλο υπολογιστικό κόστος.

Μπορούμε να διαβάσουμε κάθε στοιχείο μιας λίστας ως εξής:

Με for:

>>> L=[10,20,30]

>>> for i in L:

print i

10

20

30

>>> for i in range(3):

print L[i]

10

20

30


Με while:

>>> i=0

>>> while i < len(L):

print L[i]

i=i+1

10

20

30

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

Σημείωση: Μόνο ένα μέλος αυτού του ιστολογίου μπορεί να αναρτήσει σχόλιο.