Στην Python, ο τελεστής = χρησιμοποιείται για την ανάθεση τιμών σε μεταβλητές.
a = 100
b = 200
print(a)
# 100
print(b)
# 200
Όπως στο παραπάνω παράδειγμα, μπορείτε να εκχωρήσετε τιμές σε πολλές μεταβλητές ταυτόχρονα αντί για μία κάθε φορά, κάτι που είναι βολικό επειδή απαιτεί μόνο μία απλή γραμμή κώδικα για να γραφτεί.
Περιγράφονται οι ακόλουθες δύο περιπτώσεις.
- Ανάθεση πολλαπλών τιμών σε πολλαπλές μεταβλητές
- Ανάθεση της ίδιας τιμής σε πολλαπλές μεταβλητές
Ανάθεση πολλαπλών τιμών σε πολλαπλές μεταβλητές
Πολλαπλές τιμές μπορούν να εκχωρηθούν σε πολλές μεταβλητές ταυτόχρονα, διαχωρίζοντας τις μεταβλητές και τις τιμές με κόμματα.
a, b = 100, 200
print(a)
# 100
print(b)
# 200
Είναι αποδεκτές τρεις ή περισσότερες μεταβλητές, η καθεμία διαφορετικού τύπου.
a, b, c = 0.1, 100, 'string'
print(a)
# 0.1
print(b)
# 100
print(c)
# string
Εάν υπάρχει μία μεταβλητή στην αριστερή πλευρά, εκχωρείται ως πλειάδα.
a = 100, 200
print(a)
print(type(a))
# (100, 200)
# <class 'tuple'>
Εάν ο αριθμός των μεταβλητών στην αριστερή πλευρά δεν ταιριάζει με τον αριθμό των τιμών στη δεξιά πλευρά, θα προκύψει σφάλμα ValueError, αλλά οι υπόλοιπες μπορούν να ανατεθούν ως λίστα προσθέτοντας έναν αστερίσκο στη μεταβλητή.
# a, b = 100, 200, 300
# ValueError: too many values to unpack (expected 2)
# a, b, c = 100, 200
# ValueError: not enough values to unpack (expected 3, got 2)
a, *b = 100, 200, 300
print(a)
print(type(a))
# 100
# <class 'int'>
print(b)
print(type(b))
# [200, 300]
# <class 'list'>
*a, b = 100, 200, 300
print(a)
print(type(a))
# [100, 200]
# <class 'list'>
print(b)
print(type(b))
# 300
# <class 'int'>
Για περισσότερες πληροφορίες σχετικά με τους αστερίσκους και τον τρόπο ανάθεσης στοιχείων μιας πλειάδας ή μιας λίστας σε πολλαπλές μεταβλητές, ανατρέξτε στο ακόλουθο άρθρο.
- ΣΧΕΤΙΚΑ:Αποσυσκευασία (επέκταση και ανάθεση σε πολλαπλές μεταβλητές) πλειάδων και λιστών στην Python
Ανάθεση της ίδιας τιμής σε πολλαπλές μεταβλητές
Η ίδια τιμή μπορεί να εκχωρηθεί σε πολλές μεταβλητές χρησιμοποιώντας διαδοχικά το =. Αυτό είναι χρήσιμο για την αρχικοποίηση πολλαπλών μεταβλητών στην ίδια τιμή.
a = b = 100
print(a)
# 100
print(b)
# 100
Περισσότερα από 3 τεμάχια είναι αποδεκτά.
a = b = c = 'string'
print(a)
# string
print(b)
# string
print(c)
# string
Αφού εκχωρηθεί η ίδια τιμή, μπορεί να εκχωρηθεί άλλη τιμή σε ένα από αυτά.
a = 200
print(a)
# 200
print(b)
# 100
Να είστε προσεκτικοί όταν αναθέτετε μεταβλητά αντικείμενα, όπως λίστες και τύπους λεξικών, αντί για αμετάβλητα (αμετάβλητα) αντικείμενα, όπως ακέραιους αριθμούς, αριθμούς κινητής υποδιαστολής και συμβολοσειρές.
Η χρήση του = διαδοχικά σημαίνει ότι όλες οι μεταβλητές δείχνουν στο ίδιο αντικείμενο, οπότε αν αλλάξετε την τιμή ενός στοιχείου ή προσθέσετε ένα νέο στοιχείο, θα αλλάξουν και τα υπόλοιπα.
a = b = [0, 1, 2]
print(a is b)
# True
a[0] = 100
print(a)
# [100, 1, 2]
print(b)
# [100, 1, 2]
Το ίδιο όπως παρακάτω.
b = [0, 1, 2]
a = b
print(a is b)
# True
a[0] = 100
print(a)
# [100, 1, 2]
print(b)
# [100, 1, 2]
Εάν επιθυμείτε να τα επεξεργαστείτε ξεχωριστά, απλά αναθέστε τα στο καθένα.
after c = []; d = [], c and d are guaranteed to refer to two different, unique, newly created empty lists. (Note that c = d = [] assigns the same object to both c and d.)
3. Data model — Python 3.10.4 Documentation
a = [0, 1, 2]
b = [0, 1, 2]
print(a is b)
# False
a[0] = 100
print(a)
# [100, 1, 2]
print(b)
# [0, 1, 2]
Υπάρχουν επίσης μέθοδοι για τη δημιουργία ρηχών και βαθιών αντιγράφων με τις copy() και deepcopy() στην ενότητα copy.