Σύνταξη, Παραδείγματα και Περιπτώσεις Χρήσης

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

Η Python προσφέρει μια σειρά από ενσωματωμένες δομές δεδομένων και ένα σύνολο μεθόδων για να εργαστείτε μαζί τους. Επιπλέον, υπάρχουν ενσωματωμένες λειτουργίες που είναι χρήσιμες όταν εργάζεστε με αυτές τις δομές δεδομένων. Μια τέτοια συνάρτηση είναι η len() που δίνει τον αριθμό των στοιχείων που υπάρχουν σε έναν επαναληπτικό.

Σε αυτό το σεμινάριο, θα μάθουμε πώς να χρησιμοποιούμε τη συνάρτηση len() με λίστες, πλειάδες, συμβολοσειρές και άλλα. Θα δούμε επίσης μερικές περιπτώσεις κοινής χρήσης.

Ας ξεκινήσουμε!👩‍🏫

Σύνταξη της συνάρτησης Python len().

Ακολουθεί η σύνταξη για τη χρήση της συνάρτησης len της Python:

len(iterable)

Όπως φαίνεται, η συνάρτηση len() απαιτεί μία παράμετρο, η οποία είναι κάθε έγκυρος επαναληπτικός. Το iterable είναι συχνά ένα από μια λίστα, πλειάδα ή συμβολοσειρά. Μπορεί όμως να είναι και οποιουδήποτε άλλου έγκυρου τύπου.

Βλέπουμε ότι η σύνταξη για τη χρήση της συνάρτησης len() είναι εξαιρετικά απλή. Στη συνέχεια, ας προχωρήσουμε στην κωδικοποίηση μερικών παραδειγμάτων.

📑 Για τα παραδείγματα κώδικα σε αυτό το σεμινάριο, μπορείτε να κωδικοποιήσετε μαζί σε ένα Python REPL.

Χρησιμοποιώντας τη συνάρτηση len() με Iterables

Με Ακολουθίες

Μπορείτε να χρησιμοποιήσετε τη συνάρτηση len() για να βρείτε το μήκος επαναλήψεων όπως λίστες, πλειάδες και συμβολοσειρές.

Εδώ είναι ένα παράδειγμα:

>>> nums = [9,3,6,1,2]
>>> len(nums)
5

>>> nums_tup = (9,3,6,1,2)
>>> len(nums_tup)
5

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

Με άλλες συλλογές

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

  8 Μεταφραστές από Αγγλικά σε Κώδικα Μορς και αντίστροφα που μπορείτε να χρησιμοποιήσετε

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

>>> nums_set = set(nums)
>>> len(nums_set)
5

>>> prices = {'Notebook':5,'Pencil case':7,'Bookmarks':3,'Pens':1,'Markers':8}
>>> len(prices)
5

Συνήθεις περιπτώσεις χρήσης της συνάρτησης Python len().

Μέχρι στιγμής, έχουμε δει απλά παραδείγματα χρήσης της συνάρτησης len() για να λάβουμε τον αριθμό των στοιχείων σε ένα iterable. Τώρα ας δούμε πού μπορούμε να το χρησιμοποιήσουμε στην πράξη.

#1. Επανάληψη με χρήση βρόχων For

Η Python for loop παρέχει ένα κατασκεύασμα για βρόχο μέσω επαναλήψεων στο στοιχείο for σε επαναληπτική σύνταξη. Αλλά εάν θέλετε να αποκτήσετε πρόσβαση στο ευρετήριο κάθε στοιχείου αντί για το ίδιο το στοιχείο ή και στο ευρετήριο και στα στοιχεία μαζί, μπορείτε να χρησιμοποιήσετε τη συνάρτηση range() όπως φαίνεται:

>>> nums = [9,2,4,7,8]
>>> for i in range(len(nums)):
...      print(f"Index {i}: {nums[i]}")

Επειδή το range(N) δίνει την ακολουθία ακεραίων αριθμών 0,1,2,…,N – 1, χρησιμοποιώντας το range(len(nums)) μας δίνει το σύνολο των έγκυρων δεικτών για να πραγματοποιήσουμε βρόχο.

# Output
Index 0: 9
Index 1: 2
Index 2: 4
Index 3: 7
Index 4: 8

Ωστόσο, ο συνιστώμενος Pythonic τρόπος για πρόσβαση τόσο σε ευρετήριο όσο και σε στοιχείο είναι η χρήση της συνάρτησης απαρίθμησης:

>>> nums = [9,2,4,7,8]
>>> for idx,num in enumerate(nums):
...     print(f"Index {idx}: {num}")
# Output
Index 0: 9
Index 1: 2
Index 2: 4
Index 3: 7
Index 4: 8

#2. Βρόχος υπό όρους με χρήση βρόχων while

Ας υποθέσουμε ότι έχετε μια λίστα με αριθμούς nums. Η μέθοδος λίστας pop() αφαιρεί το τελευταίο στοιχείο στη λίστα και το επιστρέφει.

Εφόσον το μήκος της λίστας nums len(nums) είναι μεγαλύτερο από μηδέν—υπάρχει τουλάχιστον ένα στοιχείο που μπορεί να αφαιρεθεί.

>>> nums = [9,2,4,7,8]
>>> while len(nums) > 0:
...     nums.pop()
# Output
8
7
4
2
9

Το παραπάνω παράδειγμα είναι ένας πιο σαφής τρόπος γραφής των παρακάτω:

>>> nums = [9,2,4,7,8]
>>> while nums:
...     nums.pop()

ενώ nums: ισοδυναμεί με τη συνθήκη «ενώ η λίστα αριθμών δεν είναι κενή».

#3. Έλεγχος και επικύρωση του μήκους των Iterables

Μια άλλη κοινή χρήση της συνάρτησης φακού είναι ο έλεγχος και η επικύρωση του μήκους ορισμένων επαναλήψεων.

Εδώ ελέγχουμε αν το όνομα χρήστη είναι μια έγκυρη συμβολοσειρά με βάση το μήκος (υπολογισμένο χρησιμοποιώντας τη συνάρτηση len()):

>>> username = "another-random-user"
>>> if len(username) > 10:
...     print("Username too long; should be 10 characters long at max.")
... elif len(username) < 5:
...     print("Username too short; should be at least 5 characters long.")
... else:
...     print("Valid username!")
Username too long; should be 10 characters long at max.

#4. Κατανοήσεις λίστας και λεξικού

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

  Πώς να κατεβάσετε βίντεο από το Reddit

Κατανόηση λίστας

Σε αυτήν την κατανόηση λίστας, χρησιμοποιούμε τη συνάρτηση len() για να πάρουμε το μήκος κάθε συμβολοσειράς στη λίστα γλωσσών.

>>> languages = ['Python','C','Rust','JavaScript']
>>> len_langs = [len(lang) for lang in languages]
>>> len_langs
[6, 1, 4, 10]

Κατανόηση Λεξικού

Σε αυτήν την κατανόηση λεξικού, χρησιμοποιούμε τη λίστα γλωσσών και τη συνάρτηση len() για να δημιουργήσουμε ένα λεξικό:

>>> languages = ['Python','C','Rust','JavaScript']
>>> lang_len = {lang:len(lang) for lang in languages}
>>> lang_len
{'Python': 6, 'C': 1, 'Rust': 4, 'JavaScript': 10}

Εδώ, τα κλειδιά και οι τιμές είναι οι συμβολοσειρές γλώσσας και το μήκος των συμβολοσειρών γλώσσας, αντίστοιχα.

#5. Παράμετρος κλειδιού στην προσαρμοσμένη ταξινόμηση

Η Python έχει την ενσωματωμένη μέθοδο sort() για να ταξινομεί τις λίστες Python στη θέση της και τη συνάρτηση sorted() για την ταξινόμηση λιστών και άλλων επαναλήψεων.

Και στα δύο αυτά, μπορείτε να χρησιμοποιήσετε την παράμετρο κλειδί για να προσαρμόσετε την ταξινόμηση.

Εδώ, ταξινομούμε τη λίστα γλωσσών με βάση το μήκος της συμβολοσειράς.

>>> languages = ['Python','C','Rust','JavaScript']
>>> languages.sort(key=len)
>>> languages
['C', 'Rust', 'Python', 'JavaScript']

Στο παρακάτω απόσπασμα, χρησιμοποιούμε τη συνάρτηση sorted() για να αποκτήσουμε μια ταξινομημένη λίστα.

>>> languages = ['Hindi','English','German','French']
>>> sorted(languages,key=len)
['Hindi', 'German', 'French', 'English']

Σε αυτό το παράδειγμα, και τα δύο «Γερμανικά» και «Γαλλικά» έχουν 6 χαρακτήρες το καθένα. Επειδή η συνάρτηση sorted() εκτελεί σταθερή ταξινόμηση, η σειρά στην αρχική λίστα διατηρείται.

#6. Μήκος NumPy Arrays

Μπορείτε επίσης να χρησιμοποιήσετε τη συνάρτηση len() με άλλες δομές δεδομένων όπως Πίνακες NumPy.

>>> import numpy as np
>>> np_array = np.array([3,4,6,9])
>>> type(np_array)
<class 'numpy.ndarray'>
>>> len(np_array)
4

Σε αυτήν την περίπτωση, το np_array είναι ένα διάνυσμα με 4 στοιχεία. Οπότε ο len(np_array) επιστρέφει 4, τον αριθμό των στοιχείων που υπάρχουν στον πίνακα.

Ο πίνακας είναι ένας δισδιάστατος πίνακας.

Εξετάστε το ακόλουθο παράδειγμα. len(np_array) είναι 2, που είναι ο αριθμός των σειρών.

>>> matrix = [[1,2,3],[4,5,6]]
>>> np_array = np.array(matrix)
>>> np_array
array([[1, 2, 3],
       [4, 5, 6]])
>>> len(np_array)
2

Για να καταλάβουμε, ας επιστρέψουμε στο matrix. Έχουμε μια δομή ένθετης λίστας όπου η εξωτερική λίστα περιέχει δύο ένθετες λίστες. Και η συνάρτηση len() επιστρέφει τον αριθμό των στοιχείων σε ένα κοντέινερ (εδώ, είναι δύο λίστες):

>>> help(len)
Help on built-in function len in module builtins:

len(obj, /)
    Return the number of items in a container.

Ωστόσο, καθώς ξεκινάτε να εργάζεστε με πολυδιάστατους πίνακες, συνιστάται να χρησιμοποιείτε το χαρακτηριστικό σχήμα.

>>> np_array.shape
(2, 3)

Συνήθεις παγίδες που πρέπει να αποφύγετε όταν χρησιμοποιείτε τη συνάρτηση len() της Python

Για να ολοκληρώσουμε τη συζήτησή μας, ας δούμε μερικές από τις κοινές παγίδες που πρέπει να αποφύγετε όταν χρησιμοποιείτε τη συνάρτηση len στην Python.

  9 καλύτερες προσφορές SaaS 🤑 για την επιχείρησή σας αυτή τη στιγμή [Up to 90% OFF]

Χρήση len() με μη επαναλαμβανόμενους τύπους δεδομένων

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

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

>>> len(2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()

>>> len(True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'bool' has no len()

>>> len(3.14)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'float' has no len()

Στην Python, οι γεννήτριες είναι επιλογές αποδοτικές στη μνήμη για περιπτώσεις χρήσης που απαιτούν δημιουργία ακολουθίας. Το αντικείμενο γεννήτριας επιστρέφει τα στοιχεία της ακολουθίας —κατ’ απαίτηση— ένα στοιχείο κάθε φορά. Αλλά τα αντικείμενα γεννήτριας δεν έχουν μήκος.

Έτσι, θα αντιμετωπίσετε σφάλματα εάν προσπαθήσετε να υπολογίσετε το μήκος ενός αντικειμένου γεννήτριας:

>>> nums_sq = (i*i for i in range(10))
>>> nums_sq
<generator object <genexpr> at 0x0157DBC0>
>>> len(nums_sq)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'generator' has no len()

Χρήση len() με Πλειάδες Μήκους Ένα

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

Εδώ είναι ένα παράδειγμα:

>>> nums = (1)
>>> len(nums)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()

Έτσι, όταν έχετε μια πλειάδα με μόνο ένα στοιχείο, αρχικοποιήστε την με αυτήν τη μορφή: tuple_name = (elt, ) έτσι ώστε να ερμηνεύεται ως πλειάδα:

>>> nums = (1,)
>>> len(nums)
1

Ανακεφαλαίωση

Ακολουθεί μια περίληψη του τι έχουμε καλύψει σε αυτό το σεμινάριο:

  • Μπορείτε να βρείτε τον αριθμό των στοιχείων σε οποιοδήποτε επαναληπτικό χρησιμοποιώντας τη συνάρτηση len() στην Python. Η σύνταξη για τη χρήση της συνάρτησης μήκους είναι: len(οποιοδήποτε-έγκυρο-επειλημμένο).
  • Αυτό περιλαμβάνει ακολουθίες όπως λίστες, πλειάδες και συμβολοσειρές. Και άλλες συλλογές όπως λεξικά και σετ.
  • Η συνάρτηση len() χρησιμοποιείται συνήθως σε βρόχους και κατανοήσεις.
  • Μπορείτε επίσης να χρησιμοποιήσετε τη συνάρτηση len() ως βασική παράμετρο όταν χρειάζεται να προσαρμόσετε την ταξινόμηση ανάλογα με το μήκος. Για παράδειγμα: ταξινόμηση μιας λίστας συμβολοσειρών με βάση το μήκος τους.

Στη συνέχεια, μάθετε πώς να χρησιμοποιείτε τη συνάρτηση sum() της Python.