Sintaxă, exemple și cazuri de utilizare

Când lucrați cu iterabile Python, găsirea numărului de elemente pe care le conține iterabile este o operație comună. Aflați cum să utilizați obiectivul încorporat din Python pentru a găsi lungimea iterabilelor și multe altele.

Python oferă o suită de structuri de date încorporate și un set de metode pentru a lucra cu acestea. În plus, există funcții încorporate care sunt utile atunci când lucrați cu aceste structuri de date. O astfel de funcție este len() care oferă numărul de elemente prezente într-un iterabil.

În acest tutorial, vom învăța cum să folosim funcția len() cu liste, tupluri, șiruri și multe altele. Vom vedea, de asemenea, câteva cazuri de utilizare obișnuite.

Să începem!👩‍🏫

Sintaxa funcției Python len().

Iată sintaxa pentru a utiliza funcția len a lui Python:

len(iterable)

După cum s-a văzut, funcția len() necesită un parametru, care este orice iterabil valid. Iterabilul este adesea unul dintr-o listă, tuplu sau șir. Dar poate fi și orice alt tip valid.

Vedem că sintaxa pentru a utiliza funcția len() este super simplă. În continuare, să trecem la codificarea câteva exemple.

📑 Pentru exemplele de cod din acest tutorial, puteți codifica într-un REPL Python.

Utilizarea funcției len() cu Iterables

Cu secvențe

Puteți utiliza funcția len() pentru a găsi lungimea iterabilelor, cum ar fi liste, tupluri și șiruri.

Iată un exemplu:

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

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

Pentru aceste structuri de date care stochează o secvență, de obicei veți accesa elemente folosind indexul lor sau veți obține o porțiune (subsecvență) după cum este necesar.

Cu alte colecții

De asemenea, puteți utiliza funcția len() cu alte colecții Python, cum ar fi seturi și dicționare.

  10 structuri de date Python [Explained With Examples]

Aceste structuri de date sunt colecții neordonate. Deși este posibil să nu fiți interesat de comandarea articolelor, este totuși util să obțineți numărul total de articole din colecție.

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

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

Cazuri de utilizare obișnuite ale funcției Python len().

Până acum, am văzut exemple simple de utilizare a funcției len() pentru a obține numărul de elemente dintr-un iterabil. Acum să vedem unde putem folosi acest lucru în practică.

#1. Iterație folosind bucle For

Python for loop oferă o construcție pentru a parcurge bucla prin iterabile în for un element în sintaxă iterabilă. Dar dacă doriți să accesați indexul fiecărui articol în loc de elementul în sine sau atât indexul cât și elementele împreună, puteți utiliza funcția range() așa cum se arată:

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

Deoarece range(N) dă secvența numerelor întregi 0,1,2,…,N – 1, folosind range(len(nums)) ne oferă setul de indici validi pe care trebuie să-i trecem în buclă.

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

Cu toate acestea, modalitatea Pythonic recomandată de a accesa atât index, cât și element este utilizarea funcției enumerate:

>>> 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. Bucle condiționată folosind bucle While

Să presupunem că aveți o listă de numere nums. Metoda listă pop() elimină ultimul element din listă și îl returnează.

Atâta timp cât lungimea listei de numere len(nums) este mai mare decât zero – există cel puțin un element care poate fi eliminat.

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

Exemplul de mai sus este o modalitate mai explicită de a scrie următoarele:

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

while nums: este echivalent cu condiția „în timp ce lista de numere nu este goală”.

#3. Verificarea și validarea lungimii iterabilelor

O altă utilizare comună a funcției len este în verificarea și validarea lungimii anumitor iterabile.

Aici verificăm dacă numele de utilizator este un șir valid pe baza lungimii (calculată folosind funcția 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. Lista și înțelegerea dicționarului

Comprehensions în Python oferă o sintaxă concisă pentru a construi noi iterabile din cele existente. Putem folosi funcții încorporate într-o expresie de înțelegere.

  De ce cookie-urile terță parte sunt eliminate treptat și ce le va înlocui?

Înțelegerea listei

În această înțelegere a listei, folosim funcția len() pentru a obține lungimea fiecărui șir din lista de limbi.

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

Dicţionar Comprehension

În această înțelegere a dicționarului, folosim lista de limbi și funcția len() pentru a construi un dicționar:

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

Aici, cheile și valorile sunt șirurile de limbă și, respectiv, lungimea șirurilor de limbă.

#5. Parametru cheie în Sortare personalizată

Python are încorporată metoda sort() pentru a sorta listele Python și funcția sorted() pentru a sorta liste și alte iterabile.

În ambele, puteți utiliza parametrul cheie pentru a personaliza sortarea.

Aici, sortăm lista de limbi în funcție de lungimea șirului.

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

În fragmentul de mai jos, folosim funcția sorted() pentru a obține o listă sortată.

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

În acest exemplu, atât „germană” cât și „franceză” au câte 6 caractere fiecare. Deoarece funcția sorted() realizează o sortare stabilă, ordonarea în lista originală este păstrată.

#6. Lungimea tablourilor NumPy

De asemenea, puteți utiliza funcția len() cu alte structuri de date, cum ar fi tablouri NumPy.

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

În acest caz, np_array este un vector cu 4 elemente. Deci len(np_array) returnează 4, numărul de elemente prezente în matrice.

O matrice este o matrice bidimensională.

Luați în considerare următorul exemplu. len(np_array) este 2, care este numărul de rânduri.

>>> 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

Pentru a înțelege, să revenim la matrice. Avem o structură de listă imbricată în care lista exterioară conține două liste imbricate. Și funcția len() returnează numărul de articole dintr-un container (aici, sunt două liste):

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

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

Cu toate acestea, pe măsură ce începeți să lucrați cu matrice multidimensionale, este recomandat să utilizați în schimb atributul shape.

>>> np_array.shape
(2, 3)

Capcanele obișnuite de evitat atunci când utilizați funcția len() a lui Python

Pentru a încheia discuția noastră, să trecem peste câteva dintre capcanele comune pe care ar trebui să le evitați atunci când utilizați funcția len în Python.

  Puternic și eficient, dar nu fără probleme

Utilizarea len() cu tipuri de date non-iterabile

Știm că funcția len ia ca argument numai iterabile valide. Adică, dacă apelați funcția len cu un tip de date invalid, care nu este iterabil, veți întâlni erori.

Astfel de tipuri nevalide includ tipurile de date de bază, cum ar fi numere întregi, numere în virgulă mobilă și booleeni:

>>> 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()

În Python, generatoarele sunt opțiuni eficiente din punct de vedere al memoriei pentru cazurile de utilizare care necesită generarea de secvențe. Obiectul generator returnează elementele secvenței — la cerere — câte un element. Dar obiectele generatoare nu au o lungime.

Deci, veți ajunge la erori dacă încercați să calculați lungimea unui obiect generator:

>>> 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()

Folosind len() cu tupluri de lungime unu

Dacă introduceți doar elementul într-un tuplu, Python îl interpretează ca un singur element și nu ca un tuplu.

Iată un exemplu:

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

Deci, când aveți un tuplu cu un singur element, inițializați-l în această formă: tuple_name = (elt, ) astfel încât să fie interpretat ca un tuplu:

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

Rezumând

Iată un rezumat a ceea ce am tratat în acest tutorial:

  • Puteți găsi numărul de elemente din orice iterabil folosind funcția len() din Python. Sintaxa pentru a utiliza funcția de lungime este: len(any-valid-iterable).
  • Aceasta include secvențe precum liste, tupluri și șiruri. Și alte colecții precum dicționare și seturi.
  • Funcția len() este folosită în mod obișnuit în bucle și înțelegeri.
  • De asemenea, puteți utiliza funcția len() ca parametru cheie atunci când trebuie să personalizați sortarea în funcție de lungime. De exemplu: sortarea unei liste de șiruri în funcție de lungimea acestora.

Apoi, aflați cum să utilizați funcția sum() a lui Python.