Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

5.4 Διαχωρισμός Ακολουθιών (Unpacking Sequences) στην Python

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

Βασικές Αρχές του Διαχωρισμού

Μπορείτε να διαχωρίσετε τα στοιχεία οποιασδήποτε ακολουθίας (όπως tuples, λίστες, strings) αναθέτοντάς τα σε μια λίστα μεταβλητών διαχωρισμένων με κόμμα. Ο αριθμός των μεταβλητών στην αριστερή πλευρά του τελεστή ανάθεσης πρέπει να είναι ίδιος με τον αριθμό των στοιχείων της ακολουθίας στη δεξιά πλευρά. Αν υπάρχει διαφορά στον αριθμό, θα προκύψει ValueError.

Παραδείγματα Διαχωρισμού

Ας εξετάσουμε μερικά παραδείγματα διαχωρισμού διαφόρων ακολουθιών:

  1. Διαχωρισμός String:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
s = "ΓΕΙΑ"
a, b, c, d = s
print(a, b, c, d) # Εκτυπώνει Γ Ε Ι Α
s = "ΓΕΙΑ" a, b, c, d = s print(a, b, c, d) # Εκτυπώνει Γ Ε Ι Α
   s = "ΓΕΙΑ"
   a, b, c, d = s
   print(a, b, c, d)  # Εκτυπώνει Γ Ε Ι Α
  1. Διαχωρισμός Λίστας:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
lista = [1, 2, 3]
x, y, z = lista
print(x, y, z) # Εκτυπώνει 1 2 3
lista = [1, 2, 3] x, y, z = lista print(x, y, z) # Εκτυπώνει 1 2 3
   lista = [1, 2, 3]
   x, y, z = lista
   print(x, y, z)  # Εκτυπώνει 1 2 3
  1. Διαχωρισμός Range:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
range_values = range(3)
i, j, k = range_values
print(i, j, k) # Εκτυπώνει 0 1 2
range_values = range(3) i, j, k = range_values print(i, j, k) # Εκτυπώνει 0 1 2
   range_values = range(3)
   i, j, k = range_values
   print(i, j, k)  # Εκτυπώνει 0 1 2

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

Ανταλλαγή Τιμών μέσω Συνένωσης και Διαχωρισμού & Ασφαλής Πρόσβαση σε Δείκτες και Τιμές με τη Συνάρτηση enumerate

Ανταλλαγή Τιμών μέσω Συνένωσης και Διαχωρισμού

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
a = 1
b = 2
a, b = b, a # Ανταλλαγή τιμών των a και b
a = 1 b = 2 a, b = b, a # Ανταλλαγή τιμών των a και b
a = 1
b = 2
a, b = b, a  # Ανταλλαγή τιμών των a και b

Ασφαλής Πρόσβαση σε Δείκτες και Τιμές με τη Συνάρτηση enumerate

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

Χρήση της enumerate

Η enumerate δέχεται ένα iterable και επιστρέφει ένα iterator που για κάθε στοιχείο του iterable επιστρέφει ένα tuple με το δείκτη και την τιμή του στοιχείου.

Δημιουργία Λίστας με την enumerate
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
items = ["α", "β", "γ"]
indexed_list = list(enumerate(items))
print(indexed_list) # Εκτυπώνει [(0, 'α'), (1, 'β'), (2, 'γ')]
items = ["α", "β", "γ"] indexed_list = list(enumerate(items)) print(indexed_list) # Εκτυπώνει [(0, 'α'), (1, 'β'), (2, 'γ')]
items = ["α", "β", "γ"]
indexed_list = list(enumerate(items))
print(indexed_list)  # Εκτυπώνει [(0, 'α'), (1, 'β'), (2, 'γ')]
Δημιουργία Tuple με την enumerate
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
indexed_tuple = tuple(enumerate(items))
print(indexed_tuple) # Εκτυπώνει ((0, 'α'), (1, 'β'), (2, 'γ'))
indexed_tuple = tuple(enumerate(items)) print(indexed_tuple) # Εκτυπώνει ((0, 'α'), (1, 'β'), (2, 'γ'))
indexed_tuple = tuple(enumerate(items))
print(indexed_tuple)  # Εκτυπώνει ((0, 'α'), (1, 'β'), (2, 'γ'))
Επανάληψη με την enumerate

Κατά τη διάρκεια μιας επανάληψης for, μπορείτε να διαχωρίσετε κάθε tuple που επιστρέφεται από την enumerate στις μεταβλητές index και value:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
for
index, value in enumerate(items):
print(f"Δείκτης: {index}, Τιμή: {value}")
for index, value in enumerate(items): print(f"Δείκτης: {index}, Τιμή: {value}")
for

 index, value in enumerate(items):
    print(f"Δείκτης: {index}, Τιμή: {value}")

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

Δημιουργία Ενός Απλού Διαγράμματος Ράβδων στην Python

Ας δημιουργήσουμε ένα απλό διάγραμμα ράβδων (bar chart) χρησιμοποιώντας Python, όπου το μήκος κάθε ράβδου θα είναι ανάλογο με την τιμή ενός στοιχείου σε μια λίστα και θα απεικονίζεται με αστερίσκους (*). Για την ασφαλή πρόσβαση στους δείκτες και τις τιμές της λίστας, θα χρησιμοποιήσουμε τη συνάρτηση enumerate.

Παράδειγμα Κώδικα

Ακολουθεί ένα παράδειγμα του κώδικα που δημιουργεί το διάγραμμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# Δημιουργία μιας λίστας με αριθμητικές τιμές
values = [3, 7, 2, 5, 10]
# Επανάληψη στη λίστα με τη χρήση της enumerate για πρόσβαση σε δείκτη και τιμή
for index, value in enumerate(values):
# Δημιουργία μιας σειράς αστερισκών ανάλογα με την τιμή του στοιχείου
bar = '*' * value
# Εμφάνιση μιας μορφοποιημένης γραμμής με το δείκτη, την τιμή και τη ράβδο αστερισκών
print(f"Δείκτης {index}: τιμή {value}, Ράβδος: {bar}")
# Δημιουργία μιας λίστας με αριθμητικές τιμές values = [3, 7, 2, 5, 10] # Επανάληψη στη λίστα με τη χρήση της enumerate για πρόσβαση σε δείκτη και τιμή for index, value in enumerate(values): # Δημιουργία μιας σειράς αστερισκών ανάλογα με την τιμή του στοιχείου bar = '*' * value # Εμφάνιση μιας μορφοποιημένης γραμμής με το δείκτη, την τιμή και τη ράβδο αστερισκών print(f"Δείκτης {index}: τιμή {value}, Ράβδος: {bar}")
# Δημιουργία μιας λίστας με αριθμητικές τιμές
values = [3, 7, 2, 5, 10]

# Επανάληψη στη λίστα με τη χρήση της enumerate για πρόσβαση σε δείκτη και τιμή
for index, value in enumerate(values):
    # Δημιουργία μιας σειράς αστερισκών ανάλογα με την τιμή του στοιχείου
    bar = '*' * value
    # Εμφάνιση μιας μορφοποιημένης γραμμής με το δείκτη, την τιμή και τη ράβδο αστερισκών
    print(f"Δείκτης {index}: τιμή {value}, Ράβδος: {bar}")

Στο παραπάνω παράδειγμα, για κάθε στοιχείο της λίστας values, ο τελεστής επανάληψης * χρησιμοποιείται για να δημιουργήσει μια σειρά αστερισκών που αντιστοιχεί στο μήκος κάθε ράβδου. Η enumerate χρησιμοποιείται για να αποκτήσουμε το δείκτη και την τιμή κάθε στοιχείου, επιτρέποντας την αποτύπωση του δείκτη και της τιμής μαζί με την αντίστοιχη ράβδο στο διάγραμμα.

12 Ιανουαρίου, 2024
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων