Ανάθεση πολλαπλών ή της ίδιας τιμής σε πολλαπλές μεταβλητές στην Python

Επιχείρηση

Στην 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'>

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

Ανάθεση της ίδιας τιμής σε πολλαπλές μεταβλητές

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

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.

Copied title and URL