Syntaks, eksempler og brukstilfeller

Når du arbeider med Python iterables, er det en vanlig operasjon å finne antall elementer som iterables inneholder. Lær hvordan du bruker Pythons innebygde linse for å finne lengden på iterables og mye mer.

Python tilbyr en pakke med innebygde datastrukturer og et sett med metoder for å jobbe med dem. I tillegg er det innebygde funksjoner som kommer godt med når man jobber med disse datastrukturene. En slik funksjon er len() som gir antall elementer som er tilstede i en iterabel.

I denne opplæringen lærer vi hvordan du bruker len()-funksjonen med lister, tupler, strenger og mer. Vi vil også se noen vanlige brukstilfeller.

La oss komme i gang!👩‍🏫

Syntaks for Python len()-funksjonen

Her er syntaksen for å bruke Pythons len-funksjon:

len(iterable)

Som sett krever len()-funksjonen én parameter, som er en hvilken som helst gyldig itererbar. Den iterable er ofte en av en liste, tuppel eller streng. Men det kan også være en hvilken som helst annen gyldig type.

Vi ser at syntaksen for å bruke len()-funksjonen er superenkel. La oss deretter fortsette med å kode noen få eksempler.

📑 For kodeeksemplene i denne opplæringen kan du kode med i en Python REPL.

Bruke len()-funksjonen med Iterables

Med sekvenser

Du kan bruke len()-funksjonen til å finne lengden på iterables som lister, tuples og strenger.

Her er et eksempel:

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

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

For disse datastrukturene som lagrer en sekvens, vil du vanligvis få tilgang til elementer ved å bruke deres indeks eller få en del (undersekvens) etter behov.

Med andre samlinger

Du kan også bruke len()-funksjonen med andre Python-samlinger som sett og ordbøker.

  USB-RF vs. Bluetooth for mus og tastaturer: Hvilken er bedre?

Disse datastrukturene er uordnede samlinger. Selv om du kanskje ikke er interessert i å bestille varene, er det likevel nyttig å få det totale antallet varer i samlingen.

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

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

Vanlige brukstilfeller av Python len()-funksjonen

Så langt har vi sett enkle eksempler på bruk av len()-funksjonen for å få antall elementer i en iterabel. La oss nå se hvor vi kan bruke dette i praksis.

#1. Iterasjon ved bruk for løkker

Python for loop gir en konstruksjon for å gå gjennom iterables i for et element i iterable syntaks. Men hvis du vil ha tilgang til indeksen til hvert element i stedet for selve elementet eller både indeksen og elementene sammen, kan du bruke range()-funksjonen som vist:

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

Fordi område(N) gir sekvensen av heltall 0,1,2,…,N – 1, gir bruk av område(len(tall)) oss settet med gyldige indekser å gå gjennom.

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

Den anbefalte Pythonic-måten for å få tilgang til både indeks og element er imidlertid å bruke enumerate-funksjonen:

>>> 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. Betinget sløyfe ved bruk av løkker

Si at du har en liste over tall nums. Listemetoden pop() fjerner det siste elementet i listen og returnerer det.

Så lenge lengden på nums-listen len(nums) er større enn null – er det minst ett element som kan fjernes.

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

Eksempelet ovenfor er en mer eksplisitt måte å skrive følgende på:

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

while nums: tilsvarer betingelsen «mens nums-listen ikke er tom».

#3. Sjekke og validere lengden på iterables

En annen vanlig bruk av len-funksjonen er å sjekke og validere lengden på visse iterables.

Her sjekker vi om brukernavnet er en gyldig streng basert på lengden (beregnet ved hjelp av len()-funksjonen):

>>> 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. Liste- og ordbokforståelser

Forståelser i Python gir en kortfattet syntaks for å konstruere nye iterables fra eksisterende. Vi kan bruke innebygde funksjoner i et forståelsesuttrykk.

  12 ressurser for å finne gratis bakgrunnsmusikk for videoene dine

Listeforståelse

I denne listeforståelsen bruker vi funksjonen len() for å få lengden på hver streng i språklisten.

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

Ordbokforståelse

I denne ordbokforståelsen bruker vi språklisten og len()-funksjonen for å konstruere en ordbok:

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

Her er nøklene og verdiene henholdsvis språkstrengene og lengden på språkstrengene.

#5. Nøkkelparameter i tilpasset sortering

Python har den innebygde sort()-metoden for å sortere Python-lister på plass og sorted()-funksjonen for å sortere lister og andre iterables.

I begge disse kan du bruke nøkkelparameteren til å tilpasse sorteringen.

Her sorterer vi språklisten basert på lengden på strengen.

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

I utdraget nedenfor bruker vi sorted()-funksjonen for å få en sortert liste.

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

I dette eksemplet har både «tysk» og «fransk» 6 tegn hver. Fordi sortert()-funksjonen utfører stabil sortering, blir rekkefølgen i den opprinnelige listen bevart.

#6. Lengde på NumPy-matriser

Du kan også bruke len()-funksjonen med andre datastrukturer som NumPy-matriser.

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

I dette tilfellet er np_array en vektor med 4 elementer. Så len(np_array) returnerer 4, antall elementer som er tilstede i matrisen.

En matrise er en todimensjonal matrise.

Tenk på følgende eksempel. len(np_array) er 2, som er antall rader.

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

For å forstå, la oss gå tilbake til matrisen. Vi har en nestet listestruktur der den ytre listen inneholder to nestede lister. Og len()-funksjonen returnerer antall elementer i en beholder (her er det to lister):

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

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

Men når du begynner å jobbe med flerdimensjonale arrays, anbefales det å bruke shape-attributtet i stedet.

>>> np_array.shape
(2, 3)

Vanlige fallgruver å unngå når du bruker Pythons len()-funksjon

For å avslutte diskusjonen vår, la oss gå gjennom noen av de vanlige fallgruvene du bør unngå når du bruker len-funksjonen i Python.

  7 Runtime Application Self-Protection (RASP)-verktøy for moderne applikasjoner

Bruke len() med ikke-iterbare datatyper

Vi vet at len-funksjonen kun tar inn gyldige iterables som argument. Det betyr at hvis du kaller len-funksjonen med – en ugyldig datatype – som ikke kan itereres, vil du få feil.

Slike ugyldige typer inkluderer de grunnleggende datatypene som heltall, flyttall og boolske tall:

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

I Python er generatorer minneeffektive valg for brukstilfeller som krever sekvensgenerering. Generatorobjektet returnerer elementene i sekvensen – på forespørsel – ett element om gangen. Men generatorobjekter har ikke en lengde.

Så du vil få feil hvis du prøver å beregne lengden på et generatorobjekt:

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

Bruke len() med Tuples of Length One

Hvis du bare setter inn elementet i en tuppel, tolker Python det som et enkelt element og ikke som en tuppel.

Her er et eksempel:

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

Så når du har en tuppel med bare ett element, initialiser den i denne formen: tuppelnavn = (elt, ) slik at den tolkes som en tuppel:

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

Oppsummering

Her er et sammendrag av det vi har dekket i denne opplæringen:

  • Du kan finne antall elementer i enhver iterabel ved å bruke len()-funksjonen i Python. Syntaksen for å bruke lengdefunksjonen er: len(any-valid-iterable).
  • Dette inkluderer sekvenser som lister, tupler og strenger. Og andre samlinger som ordbøker og sett.
  • Funksjonen len() brukes ofte i looper og forståelser.
  • Du kan også bruke len()-funksjonen som nøkkelparameter når du skal tilpasse sortering i henhold til lengden. For eksempel: sortering av en liste over strenger basert på lengden.

Deretter lærer du hvordan du bruker Pythons sum()-funksjon.