Νοημοσύνη δεδομένων Πλάτωνα.
Κάθετη Αναζήτηση & Αι.

Lists vs Tuples στην Python

Ημερομηνία:

Lists vs Tuples στην Python

Εισαγωγή

Οι λίστες και οι πλειάδες είναι δύο από τις πιο συχνά χρησιμοποιούμενες δομές δεδομένων στην Python, με το λεξικό να είναι το τρίτο. Οι λίστες και οι πλειάδες έχουν πολλές ομοιότητες:

  • Είναι και οι δύο τύποι δεδομένων ακολουθίας που αποθηκεύουν μια συλλογή στοιχείων
  • Μπορούν να αποθηκεύσουν στοιχεία οποιουδήποτε τύπου δεδομένων
  • Και οποιοδήποτε αντικείμενο είναι προσβάσιμο μέσω του ευρετηρίου του.

Έτσι, το ερώτημα που προσπαθούμε να απαντήσουμε εδώ είναι, πώς διαφέρουν; Και αν δεν υπάρχει διαφορά μεταξύ των δύο, γιατί να έχουμε τα δύο; Δεν μπορούμε να έχουμε καμία από τις δύο λίστες or πλειάδες;

Σε αυτό το άρθρο, θα δείξουμε πώς οι λίστες και οι πλειάδες διαφέρουν μεταξύ τους.

Συντακτική διαφορά

Στην Python, οι λίστες και οι πλειάδες δηλώνονται με διαφορετικούς τρόπους. Μια λίστα δημιουργείται χρησιμοποιώντας αγκύλες [] ενώ η πλειάδα δημιουργείται χρησιμοποιώντας παρένθεση ():

tuple_names = ('Nicholas', 'Michelle', 'Alex')
list_names = ['Nicholas', 'Michelle', 'Alex']
print(tuple_names)
print(list_names)

Αυτό θα έχει ως αποτέλεσμα:

('Nicholas', 'Michelle', 'Alex')
['Nicholas', 'Michelle', 'Alex']

Ορίσαμε μια πλειάδα με το όνομα tuple_names και μια λίστα με όνομα list_names. Στον ορισμό της πλειάδας, χρησιμοποιήσαμε παρένθεση () ενώ στον ορισμό της λίστας χρησιμοποιήσαμε αγκύλες [].

Πύθωνα type() Η μέθοδος βοηθά στον εύκολο εντοπισμό του τύπου ενός αντικειμένου:

print(type(tuple_names)) 
print(type(list_names)) 

Μεταβλητό vs Αμετάβλητο

Οι λίστες είναι ευμετάβλητος ενώ οι πλειάδες είναι αμετάβλητος, και αυτό σηματοδοτεί η βασική διαφορά μεταξύ των δύο. Τι σημαίνει αυτό?

Μπορούμε να αλλάξουμε/τροποποιήσουμε τις τιμές μιας λίστας αλλά δεν μπορούμε να αλλάξουμε/τροποποιήσουμε τις τιμές μιας πλειάδας.

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

Ας ρίξουμε μια ματιά σε ένα παράδειγμα που καταδεικνύει τη διαφορά μεταξύ λιστών και πλειάδων από την άποψη της αμετάβλητης. Ας δημιουργήσουμε ένα λίστα με διάφορα ονόματα:

names = ["Nicholas", "Michelle", "Alex"]

Ας δούμε τι θα συμβεί αν προσπαθήσουμε να αλλάξουμε το πρώτο στοιχείο της λίστας από Nicholas προς την Samuel:

names[0] = "Samuel"

Σημείωση: Το πρώτο στοιχείο βρίσκεται στο ευρετήριο 0.

Τώρα, ας εμφανίσουμε τα περιεχόμενα της λίστας:

print(names)

Αυτό θα εκτυπώσει την ενημερωμένη λίστα:

['Samuel', 'Michelle', 'Alex']

Τι γίνεται αν επιχειρήσουμε να κάνουμε το ίδιο με το α πλειάδα? First, let’s create a tuple:

 names = ("Nicholas", "Michelle", "Alex")

Ας προσπαθήσουμε τώρα να αλλάξουμε το πρώτο στοιχείο της πλειάδας από Nicholas προς την Samuel:

names[0] = "Samuel"

Οπτικοποίηση δεδομένων σε Python

Η Οπτικοποίηση Δεδομένων στην Python, ένα μάθημα για αρχάριους έως μεσαίους προγραμματιστές Python, θα σας καθοδηγήσει στον απλό χειρισμό δεδομένων με τα Panda, καλύπτοντας τις βασικές βιβλιοθήκες σχεδίασης…

Δοκίμασέ το

Αυτό θα έχει ως αποτέλεσμα το ακόλουθο σφάλμα:

Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    names[0] = "Samuel"
TypeError: 'tuple' object does not support item assignment

Λάβαμε ένα σφάλμα ότι ένα αντικείμενο πλειάδας δεν υποστηρίζει την εκχώρηση στοιχείων. Ο λόγος είναι ότι ένα αντικείμενο πλειάδας δεν μπορεί να αλλάξει μετά τη δημιουργία του.

Επαναχρησιμοποίηση έναντι Αντιγραφής

Tuples δεν είναι δυνατή η αντιγραφή. Ο λόγος είναι ότι οι πλειάδες είναι αμετάβλητες. Αν τρέξεις tuple(tuple_name), θα επιστρέψει αμέσως μόνο του:

names = ('Nicholas', 'Michelle', 'Alex')
copy_names = tuple(names)
print(names is copy_names)

Τα δύο είναι ίδια:

True

Σε αντίθεση, list(list_name) απαιτεί αντιγραφή όλων των δεδομένων σε μια νέα λίστα:

names = ['Nicholas', 'Michelle', 'Alex']
copy_names = list(names)
print(names is copy_names)

Από names και copy_names δεν είναι το ίδιο, το αποτέλεσμα είναι False:

False

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

Διαφορά μεγέθους

Η Python εκχωρεί μεγαλύτερα μπλοκ μνήμης με χαμηλό κόστος πλειάδες γιατί είναι αμετάβλητα. Από την άλλη πλευρά, για λίστες, Οι Pythons εκχωρούν μικρά μπλοκ μνήμης. Στο τέλος του, η πλειάδα θα έχει μικρότερη μνήμη σε σύγκριση με τη λίστα. Αυτό κάνει τις πλειάδες λίγο πιο αποδοτικές στον χώρο σε σύγκριση με τις λίστες όταν έχετε μεγάλο αριθμό στοιχείων.

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

tuple_names = ('Nicholas', 'Michelle', 'Alex')
list_names = ['Nicholas', 'Michelle', 'Alex']
print(tuple_names.__sizeof__())
print(list_names.__sizeof__())

Η έξοδος δείχνει ότι η λίστα έχει μεγαλύτερο μέγεθος από την πλειάδα:

48
64

Σημείωση: Το μέγεθος που εμφανίζεται είναι σε όρους bytes.

Ομοιογενής vs Ετερογενής

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

Σημείωση: Αυτό είναι μόνο ένα σημασιολογική διαφορά. Και οι δύο τύποι δεδομένων είναι ετερογενείς, αλλά η σύμβαση διαφέρει. Μπορείτε να αποθηκεύσετε στοιχεία του ίδιου τύπου σε μια πλειάδα και στοιχεία διαφορετικών τύπων σε μια λίστα, επίσης.

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

list_elements = ['Nicholas', 10, 'Alex']
tuple_elements = ('Nicholas', "Michelle", 'Alex')

Μεταβλητό μήκος έναντι σταθερού μήκους

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

list_names = ['Nicholas', 'Michelle', 'Alex']
list_names.append("Mercy")
print(list_names)

Η έξοδος δείχνει ότι ένα τέταρτο όνομα έχει προστεθεί στη λίστα:

['Nicholas', 'Michelle', 'Alex', 'Mercy']

Έχουμε χρησιμοποιήσει την Python's append() μέθοδος για αυτό. Θα μπορούσαμε να πετύχουμε το ίδιο μέσω του insert() μέθοδος:

list_names = ['Nicholas', 'Michelle', 'Alex']
list_names.insert(3, "Mercy")
print(list_names)

Η έξοδος δείχνει ξανά ότι ένα τέταρτο στοιχείο έχει προστεθεί στη λίστα:

['Nicholas', 'Michelle', 'Alex', 'Mercy']

Ένας πύθωνας πλειάδα δεν μας παρέχει τρόπο να αλλάξουμε το μέγεθός του.

Συμπέρασμα

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

Τελευταία ενημέρωση: 19 Απριλίου 2022

Το άρθρο αυτό ήταν χρήσιμο;

Μπορεί επίσης να σας αρέσει…

Λάβετε σεμινάρια, οδηγούς και εργασίες προγραμματιστών στα εισερχόμενά σας.

Νικόλαος ΣαμουήλΜουσικός

Είμαι προγραμματιστής στο επάγγελμα. Ενδιαφέρομαι ιδιαίτερα για Python, Java, Data Science και Machine Learning. Εάν χρειάζεστε βοήθεια σε κάποιο από αυτά, μη διστάσετε να επικοινωνήσετε μαζί μου.

© 2013-2022 Κατάχρηση στοίβας. Ολα τα δικαιώματα διατηρούνται.

spot_img

Τελευταία Νοημοσύνη

spot_img

Συνομιλία με μας

Γεια σου! Πώς μπορώ να σε βοηθήσω?