Λίστα Python εναντίον Tuples (με παραδείγματα)

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

Οι λίστες και τα Tuples αποθηκεύουν ένα ή περισσότερα αντικείμενα ή τιμές σε μια συγκεκριμένη σειρά. Τα αντικείμενα που είναι αποθηκευμένα σε μια λίστα ή πλειάδα μπορεί να είναι οποιουδήποτε τύπου, συμπεριλαμβανομένου του τύπου τίποτα που ορίζεται από τη λέξη-κλειδί Καμία.

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

Διαφορές σύνταξης

Η σύνταξη της λίστας και της πλειάδας είναι ελαφρώς διαφορετική. Οι λίστες περιβάλλονται από αγκύλες ()και Tuples περιβάλλεται από παρένθεση ().

Παράδειγμα 1.1: Δημιουργία λίστας έναντι δημιουργίας Tuple

 list_num = (1,2,3,4) tup_num = (1,2,3,4) print(list_num) print(tup_num)

Παραγωγή:

 (1,2,3,4) (1,2,3,4)

Πάνω, ορίσαμε μια μεταβλητή που ονομάζεται list_num που κατέχουν μια λίστα με τους αριθμούς από το 1να 4λίστα .Το περιβάλλεται από παρενθέσεις (). Επίσης, ορίσαμε μια μεταβλητή tup_num. που περιέχει μια πλειάδα αριθμού από 1έως 4. Η πλειάδα περιβάλλεται από παρένθεση ().

Στο python έχουμε type()λειτουργία που δίνει τον τύπο αντικειμένου που δημιουργήθηκε.

Παράδειγμα 1.2: Εύρεση τύπου δομής δεδομένων χρησιμοποιώντας τη συνάρτηση type ()

 type(list_num) type(tup_num)

Παραγωγή:

 λίστα πλειάδων

Λίστα μεταβλητών έναντι αμετάβλητων Tuples

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

Παράδειγμα 2.1: Τροποποίηση λίστας αντικειμένων εναντίον Tuple

 list_num(2) = 5 print(list_num) tup_num(2) = 5

Παραγωγή:

 (1,2,5,4) Traceback (τελευταία πρόσφατη κλήση): Αρχείο "python", γραμμή 6, στο TypeError: το αντικείμενο "tuple" δεν υποστηρίζει την ανάθεση στοιχείων

Στον παραπάνω κώδικα αντιστοιχίσαμε 5στο list_num στο ευρετήριο 2και βρήκαμε 5στο ευρετήριο 2στην έξοδο. Επίσης, 5αναθέσαμε στο tup_num στο ευρετήριο 2και πήραμε type error. Δεν μπορούμε να τροποποιήσουμε την πλειάδα λόγω της αμετάβλητης φύσης της.

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

Διαθέσιμες λειτουργίες

Οι λίστες έχουν περισσότερη ενσωματωμένη λειτουργία από αυτήν της πλειάδας. Μπορούμε να χρησιμοποιήσουμε την dir((object))ενσωματωμένη συνάρτηση για να πάρουμε όλες τις σχετικές συναρτήσεις για λίστα και πλειάδα.

Παράδειγμα 3.1: Κατάλογος λιστών

 dir(list_num)

Παραγωγή:

("__add__", "__class__", "__contains__", "__delattr__", "__delitem__", "__dir__", "__doc__", "__eq__", "__format__", "__ge__", "__getattribute__", "__get" __gt__ "," __hash__ "," __iadd__ "," __imul__ "," __init__ "," __init_subclass__ "," __iter__ "," __le__ "," __len__ "," __lt__ "," __mul__ "," __ne__ " , "__reduce__", "__reduce_ex__", "__repr__", "__reversed__", "__rmul__", "__setattr__", "__setitem__", "__sizeof__", "__str__", "__subclasshook__", "append", "clear" αντιγραφή "," μέτρηση "," επέκταση "," ευρετήριο ","εισαγωγή ',' ποπ ',' αφαίρεση ',' αντίστροφη ',' ταξινόμηση ')

Παράδειγμα 3.2: Κατάλογος Tuple

 dir(tup_num)

Παραγωγή:

 ("__add__", "__class__", "__contains__", "__delattr__", "__dir__", "__doc__", "__eq__", "__format__", "__ge__", "__getattribute__", "__getitem__", "__get" __gt__ "," __hash__ "," __init__ "," __init_subclass__ "," __iter__ "," __le__ "," __len__ "," __lt__ "," __mul__ "," __ne__ "," __new__ "," __reduce__ "," __reduce__ " , "__repr__", "__rmul__", "__setattr__", "__sizeof__", "__str__", "__subclasshook__", "count", "index")

We can clearly see that, there are so many additional functionalities associated with a list over a tuple.We can do insert and pop operation, removing and sorting elements in the list with inbuilt functions which is not available in Tuple.

Size Comparison

Tuples operation has smaller size than that of list, which makes it a bit faster but not that much to mention about until you have a huge number of elements.

Example 5.1: Calculate size of List vs. Tuple

 a= (1,2,3,4,5,6,7,8,9,0) b= (1,2,3,4,5,6,7,8,9,0) print('a=',a.__sizeof__()) print('b=',b.__sizeof__())

Output:

 a= 104 b= 120

In above code we have tuple a and list b with same items but the size of tuple is less than the list.

Different Use Cases

At first sight, it might seem that lists can always replace tuples. But tuples are extremely useful data structures

  1. Using a tuple instead of a list can give the programmer and the interpreter a hint that the data should not be changed.
  2. Tuples are commonly used as the equivalent of a dictionary without keys to store data. For Example,
     (('Swordfish', 'Dominic Sena', 2001), ('Snowden', ' Oliver Stone', 2016), ('Taxi Driver', 'Martin Scorsese', 1976))
    Above example contains tuples inside list which has a list of movies.
  3. Reading data is simpler when tuples are stored inside a list. For example,
     ((2,4), (5,7), (3,8), (5,9))
    is easier to read than
     ((2,4), (5,7), (3,8), (5,9))

Tuple can also be used as key in dictionary due to their hashable and immutable nature whereas Lists are not used as key in a dictionary because list can’t handle __hash__() and have mutable nature.

 key_val= (('alpha','bravo'):123) #Valid key_val = (('alpha','bravo'):123) #Invalid 

Key points to remember:

  1. The literal syntax of tuples is shown by parentheses () whereas the literal syntax of lists is shown by square brackets () .
  2. Οι λίστες έχουν μεταβλητό μήκος, η πλειάδα έχει σταθερό μήκος.
  3. Η λίστα έχει μεταβλητή φύση, η πλειάδα έχει αμετάβλητη φύση.
  4. Η λίστα έχει περισσότερες λειτουργίες από την πλειάδα.

ενδιαφέροντα άρθρα...