Μάθετε τη δομή δεδομένων της λίστας Python - Μέρος 1


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

Ποια είναι η διαφορά μεταξύ Μεταβλητού/Αμετάβλητου αντικειμένου;

  1. Αντικείμενα των οποίων η κατάσταση μπορεί να αλλάξει μόλις δημιουργηθεί, όπως η προσθήκη, η ενημέρωση ή η διαγραφή στοιχείων.
  2. Λίστες, Λεξικό, Σύνολο, bytearray είναι μεταβλητοί τύποι αντικειμένων στην python.

  1. Η κατάσταση του αντικειμένου δεν μπορεί να τροποποιηθεί. Μόλις δημιουργηθεί το αντικείμενο, δεν μπορούμε να προσθέσουμε, να αφαιρέσουμε ή να ενημερώσουμε στοιχεία.
  2. String, Integer, Tuples, Frozenset είναι μερικοί από τους αμετάβλητους τύπους αντικειμένων στην python.

Ποια είναι η διαφορά μεταξύ Ομοιογενούς/Ετερογενούς δομής δεδομένων;

  1. Ομογενής Δομή Δεδομένων – Τα στοιχεία δεδομένων θα είναι του ίδιου τύπου δεδομένων (π.χ. Πίνακας).
  2. Ετερογενής δομή δεδομένων – Τα στοιχεία δεδομένων ενδέχεται να μην είναι του ίδιου τύπου δεδομένων (π.χ. Λίστα, Πλειάδες, Σύνολα κ.λπ.…).

Τι είναι οι πρωτόγονοι και οι μη πρωτόγονοι τύποι δεδομένων;

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

  • dir(obj) – μια ενσωματωμένη συνάρτηση που θα επιστρέψει το χαρακτηριστικό και τις μεθόδους.
  • len(obj) – Επιστρέφετε το μήκος (τον αριθμό των στοιχείων) ενός αντικειμένου. Το όρισμα μπορεί να είναι μια ακολουθία (όπως μια συμβολοσειρά, byte, πλειάδα, λίστα ή εύρος) ή μια συλλογή (όπως λεξικό, σύνολο ή παγωμένο σύνολο).
  • del – Αυτή η ενσωματωμένη λέξη-κλειδί χρησιμοποιείται για τη διαγραφή ενός αντικειμένου από έναν χώρο ονομάτων ή για την κατάργηση στοιχείων από ένα αντικείμενο όπως λίστα, λεξικό κ.λπ..
  • type(obj) – Η συνάρτηση type() είτε επιστρέφει τον τύπο του αντικειμένου είτε επιστρέφει ένα νέο αντικείμενο τύπου με βάση τα ορίσματα που διαβιβάστηκαν.
  • id() – Αυτή η συνάρτηση επιστρέφει την \ταυτότητα ενός αντικειμένου. Πρόκειται για έναν ακέραιο που είναι εγγυημένο ότι είναι μοναδικός και σταθερός για αυτό το αντικείμενο κατά τη διάρκεια της ζωής του.

Τώρα, όπως είδατε μερικές σημαντικές λεπτομέρειες, ας συνεχίσουμε με τις δομές δεδομένων python.

Η Python συνοδεύεται από ενσωματωμένες δομές δεδομένων καθώς και οι χρήστες μπορούν να ορίσουν τις δικές τους δομές δεδομένων. Η ενσωματωμένη δομή δεδομένων περιλαμβάνει τα LIST, DICTIONARY, TUPLE και SET. Μερικά από τα παραδείγματα για δομές δεδομένων που ορίζονται από τον χρήστη είναι τα STACK, QUEUES, TREE, HASHMAP, κ.λπ…

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

Εδώ η λίστα είναι κάπως παρόμοια με έναν πίνακα, αλλά η λίστα μας επιτρέπει να αποθηκεύουμε τιμές οποιουδήποτε τύπου δεδομένων (Ετερογενής) ενώ ο πίνακας θα κρατά δεδομένα συγκεκριμένου τύπου μόνο (int, float κλπ…). Για να χρησιμοποιήσετε τον πίνακα, πρέπει να εισαγάγετε ρητά τον πίνακα από τη μονάδα πίνακας.

Σε αυτήν τη σειρά άρθρων Python, θα εξετάσουμε τι είναι μια δομή δεδομένων και η ενσωματωμένη δομή δεδομένων Python.

ΛΙΣΤΑ

Η Λίστα είναι μια δομή δεδομένων που είναι μια συλλογή διαφορετικών τύπων δεδομένων. Τι σημαίνει \συλλογή διαφορετικών τύπων δεδομένων; Η Λίστα μπορεί να αποθηκεύσει συμβολοσειρές, ακέραιους αριθμούς, τιμές κινητής υποδιαστολής, ένθετη λίστα και ούτω καθεξής.

Τα αντικείμενα Λίστας είναι \Μεταβλητά, που σημαίνει ότι τα στοιχεία που δημιουργούνται μέσα στη λίστα μπορούν να προσπελαστούν, να τροποποιηθούν ή να διαγραφούν. Ευρετηρίαση υποστήριξης λίστας. Κάθε στοιχείο στις λίστες εκχωρείται σε μια διεύθυνση και αυτή η διεύθυνση μπορεί να χρησιμοποιηθεί για πρόσβαση ή τροποποίηση της συγκεκριμένης τιμής στοιχείου.

  • Δημιουργία λίστας
  • Εισαγωγή/Πρόσβαση/Τροποποίηση λίστας
  • Διαγραφή λίστας

ΔΗΜΙΟΥΡΓΙΑ ΛΙΣΤΑΣ

Η λίστα μπορεί να δημιουργηθεί χρησιμοποιώντας αγκύλες.

>>> name_empty = []			# Empty list
>>> name = ['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']	# list with string data type
>>> name_int = [1,2,3]			# list with Integer data type
>>> name_mixed = [name_int,name,1,2,3.14]	# list with nested list items.
>>> name_mixed
[[1, 2, 3], ['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will'], 1, 2, 3.14]
>>> name_int
[1, 2, 3]

Μπορούμε να χρησιμοποιήσουμε την ενσωματωμένη συνάρτηση type() για να ελέγξουμε τον τύπο του αντικειμένου.

>>> type(name)

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

>>> dir(name)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

Μπορούμε να μάθουμε τον συνολικό αριθμό των στοιχείων στη λίστα χρησιμοποιώντας τη μέθοδο len().

>>> len(name)

Μπορούμε να δημιουργήσουμε μια νέα λίστα από μια υπάρχουσα λίστα χρησιμοποιώντας τη μέθοδο list.copy().

>>> name_new = name.copy()
>>> name_new
['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']

ΕΙΣΑΓΩΓΗ/ΠΡΟΣΒΑΣΗ/ΤΡΟΠΟΠΟΙΗΣΗ ΛΙΣΤΑΣ

Μπορούμε να εισάγουμε ένα στοιχείο σε μια λίστα σε οποιαδήποτε θέση χρησιμοποιώντας τη μέθοδο list.insert(i, x).

>>> name = ['Leo','Matt','Kane','Scott','Petter','Will']
>>> name
['Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name.insert(0,'Tom')	# Insert method takes 2 arguments (Index position, Item)
>>> name
['Tom', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']	# Tom is inserted at the 0th position.

Μπορούμε να χρησιμοποιήσουμε τη μέθοδο list.append(x) για να προσθέσουμε ένα μεμονωμένο στοιχείο στη λίστα. Αυτό θα εισάγει το στοιχείο στο τέλος της λίστας.

>>> name = []
>>> len(name)
0
>>> name.append('Leo')
>>> name.append('Matt')
>>> name.append('Kane')
>>> print(name)
['Leo', 'Matt', 'Kane']

Μπορούμε να χρησιμοποιήσουμε τη μέθοδο list.extend() για να προσθέσουμε πολλά στοιχεία στη λίστα.

>>> new_name = ['Gowtham','Martin','Luis']
>>> name.extend(new_name)
>>> name
['Will', 'Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin', 'Luis']

Μπορούμε επίσης να χρησιμοποιήσουμε τον τελεστή + για να συνδυάσουμε δύο λίστες. Και οι δύο κατάλογοι μπορεί να είναι διαφορετικών τύπων δεδομένων.

>>> a = [1,2,3]
>>> b = [2,3,3]
>>> c = a + b
>>> c
[1, 2, 3, 2, 3, 3]
>>> d = ['karthi','kenny']
>>> e = a + d
>>> e
[1, 2, 3, 'karthi', 'kenny']

Όπως αναφέρθηκε ήδη οι λίστες, τα αντικείμενα είναι μεταβλητά. Ένα στοιχείο λίστας μπορεί να τροποποιηθεί με αναφορά στη θέση του ευρετηρίου και εκχώρηση τιμής σε αυτό.

>>> name									# Before modified
['Tom', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name[0] = 'Karthi'
>>> name									# After Modified
['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']

Η λίστα υποστηρίζει θετική και αρνητική ευρετηρίαση.

Η ευρετηρίαση ξεκινά από 0 και η αρνητική ευρετηρίαση ξεκινά από -1.

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

>>> name[0]			# Accessing the List item at index 0
'Leo'
>>> name[1]
'Matt'
>>> name[4]
'Petter'
>>> name[5]
'Will'
>>> name[-1]			# Accessing the list item with negative indexing
'Will'
>>> name[-6]
'Leo'

Μπορούμε επίσης να χρησιμοποιήσουμε το slicing για πρόσβαση στα στοιχεία της λίστας. Ο τεμαχισμός μας επιτρέπει να έχουμε πρόσβαση σε ένα εύρος στοιχείων ορίζοντας τις παραμέτρους έναρξης, λήξης, Βήματος.

# SYNTAX: list[starting position, ending position, Step]

>>> name[0:3]
['Tom', 'Leo', 'Matt']
>>> name[:]
['Tom', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name[:4]
['Tom', 'Leo', 'Matt', 'Kane']
>>> name[:-2]
['Tom', 'Leo', 'Matt', 'Kane', 'Scott']
>>> name[:-1]
['Tom', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter']
>>> name[:-1:2]
['Tom', 'Matt', 'Scott']

Μπορούμε να βρούμε τον αριθμό εμφάνισης για μια δεδομένη τιμή χρησιμοποιώντας τη μέθοδο list.count(x).

>>> name_int = [1,1,2,3,1]
>>> name_int.count(1)
3

Μπορούμε να βρούμε τη θέση ευρετηρίου ενός δεδομένου στοιχείου χρησιμοποιώντας τη μέθοδο list.index(x[, start[, end]]).

>>> name			# Inserted ‘Will’ at the end of the list. Now we have 2 name ‘Will’.
['Will', 'Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will']
>>> name.index('Will)	# Returns the index position of first occurence of x.
0
>>> name.index('Will',2)	# Starting index positon’2’ is given.
7
>>> name.index('Will',2,4)	# Starting and Ending Index position is given. Since there is no 					occurence of ‘Will’ within the given search position it will throw 					Value Error.
Traceback (most recent call last):
File "<stdin>", line 1, in 
ValueError: 'Will' is not in list

Μπορούμε να χρησιμοποιήσουμε τη μέθοδο list.reverse() για να αντιστρέψουμε τα στοιχεία στη λίστα.

>>> name
['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name.reverse()
>>> name
['Will', 'Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi']

ΔΙΑΓΡΑΦΗ ΛΙΣΤΑΣ

Μπορούμε να χρησιμοποιήσουμε τη μέθοδο list.pop(x) για να αφαιρέσουμε ένα στοιχείο από μια λίστα στη θέση x. Αυτή η λειτουργία θα αφαιρέσει το στοιχείο από τη λίστα και θα εμφανίσει το στοιχείο που αφαιρέθηκε. Εάν το x δεν έχει καθοριστεί, τότε η μέθοδος pop() θα επιστρέψει το τελευταίο στοιχείο από τη λίστα.

>>> name
['Will', 'Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin', 'Luis']
>>> name.pop(0)
'Will'
>>> name
['Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin', 'Luis']
>>> name.pop()
'Luis'

Μπορούμε επίσης να χρησιμοποιήσουμε τη μέθοδο list.remove (x) για να αφαιρέσουμε το στοιχείο από τη λίστα. Εδώ το x παίρνει την τιμή του αντικειμένου και ρίχνει ένα ValueError εάν το x δεν είναι στη λίστα.

>>> name = ['Leo','Matt','Kane','Scott','Petter','Will']
>>> name.remove('Leo')
>>> name
['Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name.remove('Leo')
Traceback (most recent call last):
  File "", line 1, in 
ValueError: list.remove(x): x not in list

Μπορούμε να κάνουμε μια λίστα άδεια είτε εκχωρώντας το όνομα της λίστας σε αγκύλες είτε χρησιμοποιώντας τη μέθοδο list.clear().

>>> name1 = name.copy()
>>> name1
['Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin']
>>> name
['Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin']
>>> name = []			
>>> name
[]
>>> name1.clear()		
>>> name1
[]

Αντί να χρησιμοποιούμε μεθόδους λίστας για να κάνουμε τη λίστα άδεια ή να αφαιρέσουμε ένα στοιχείο από τη λίστα, μπορούμε να χρησιμοποιήσουμε την ενσωματωμένη λέξη-κλειδί del για να εκτελέσουμε αυτές τις ενέργειες. Η λέξη-κλειδί “del” μπορεί να διαγράψει ένα αντικείμενο λίστας από τη μνήμη ή να διαγράψει ένα στοιχείο από μια λίστα ή να διαγράψει ένα στοιχείο από μια φέτα.

>>> name = ['Leo','Matt','Kane','Scott','Petter','Will']
>>> del name[0]
>>> name
['Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> del name[-3:]
>>> name
['Matt', 'Kane']
>>> del name[:]
>>> name
[]

Η ενσωματωμένη συνάρτηση id() επιστρέφει την \ταυτότητα ενός αντικειμένου. Αυτός είναι ένας ακέραιος αριθμός που εγγυάται ότι είναι μοναδικός και σταθερός για αυτό το αντικείμενο κατά τη διάρκεια της ζωής του.

>>> id(name)
139979929658824
>>> del name
>>> id(name)
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'name' is not defined

Σημείωση: αφαιρέσαμε τη μεταβλητή λίστας από τη μνήμη χρησιμοποιώντας del(), επομένως εμφανίζει σφάλμα ονόματος.

help() funtion:

Η ενσωματωμένη βοήθεια function() είναι πολύ χρήσιμη για να λάβετε λεπτομέρειες σχετικά με ένα συγκεκριμένο αντικείμενο ή μεθόδους αυτού του αντικειμένου.

help(object)
help(object.method)
Περίληψη

Μέχρι στιγμής σε αυτό το άρθρο, έχουμε δει πώς μπορούμε να χρησιμοποιήσουμε μια δομή δεδομένων λίστας για αποθήκευση, πρόσβαση, τροποποίηση, διαγραφή αντικειμένων λίστας χρησιμοποιώντας τις μεθόδους λίστας. Έχουμε δει επίσης ορισμένες ενσωματωμένες συναρτήσεις όπως id(), dir(), type(), help()< που είναι πολύ αποτελεσματικές συναρτήσεις. Έχουμε επίσης κατανόηση λίστας στην python που παρέχει έναν πιο συνοπτικό και ευανάγνωστο τρόπο δημιουργίας λίστας.