I denne artikkelen skal vi utforske hvordan man kan finne lengden på en liste i Python ved hjelp av ulike metoder, og vi vil analysere hvilken tilnærming som er mest effektiv.
Hva er en Python-liste?
En liste i Python er en fleksibel datastruktur som kan inneholde en samling elementer. Disse elementene kan være av forskjellige datatyper, som heltall, flyttall, strenger, boolske verdier, eller til og med andre lister. Dette gjør lister til et svært allsidig verktøy for å organisere og manipulere data.
int_list = [1, 2, 3, 4, 5] print(int_list) # output -> [1, 2, 3, 4, 5] float_list = [1.1, 2.2, 3.3, 4.4, 5.5] print(float_list) # output -> [1.1, 2.2, 3.3, 4.4, 5.5] string_list = ['Geekflare', 'Cloudflare', 'Amazon'] print(string_list) # output -> ['Geekflare', 'Cloudflare', 'Amazon'] boolean_list = [True, False] print(boolean_list) # output -> [True, False] nested_list = [[1, 2], [1.1, 2.2], ['Geekflare', 'Cloudflare'], [True, False]] print(nested_list) # [[1, 2], [1.1, 2.2], ['Geekflare', 'Cloudflare'], [True, False]] different_datatype_list = [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]] print(different_datatype_list) # output -> [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]]
Python-lister kan opprettes på to hovedmåter: ved bruk av hakeparenteser `[]` eller ved å bruke listekonstruktøren `list()`. Begge metodene gir samme resultat.
square_bracket_list = [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]] print(square_bracket_list) # output -> [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]] constructor_list = list((1, 1.1, 'tipsbilk.net', True, [1, 1.1, 'Geekflare', True])) print(constructor_list) # output -> [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]]
Lister er dynamiske, noe som betyr at de kan endres etter opprettelsen. De tillater også duplikater og elementer kan aksesseres via indeks.
Ulike metoder for å finne lengden på en liste
Det finnes flere metoder for å finne lengden på en liste i Python, hver med sine fordeler og ulemper:
- Den innebygde funksjonen `len()`
- `length_hint`-metoden fra `operator`-modulen
- En tilpasset funksjon med en teller
Metode 1: Den innebygde funksjonen `len()`
`len()` er en innebygd Python-funksjon som er designet for å finne lengden på ulike datastrukturer, inkludert lister, mengder, tupler og ordbøker. Det er en enkel og effektiv metode for å finne antall elementer i en samling.
Eksempel:
languages = ['Python', 'Java', 'C++', 'PHP', 'nodeJS'] languages_length = len(languages) print('Lengden på listen er: ',languages_length)
Output:
Lengden på listen er: 5
Sørg for at du har Python installert, eller bruk en online Python-kompilator for å eksperimentere med koden.
Metode 2: `length_hint`-metoden fra `operator`-modulen
`length_hint` er en funksjon som er tilgjengelig i `operator`-modulen. Denne funksjonen er designet for å gi en antydning om lengden på et itererbart objekt, som lister, mengder, tupler og ordbøker. Den er ikke like vanlig brukt som `len()` og kan være mer relevant i visse ytelsessensitive situasjoner.
Eksempel:
import operator languages = ['Python', 'Java', 'C++', 'PHP', 'nodeJS'] languages_length = operator.length_hint(languages) print('Lengden på listen ved hjelp av operator er: ',languages_length)
Output:
Lengden på listen ved hjelp av operator er: 5
Metode 3: En tilpasset funksjon med teller
En annen metode for å finne lengden på en liste er å lage en tilpasset funksjon. Denne funksjonen vil iterere gjennom listen og inkrementere en teller for hvert element. Denne metoden er en mer tradisjonell tilnærming og kan være nyttig for å forstå hvordan lengdeberegning fungerer under panseret.
Tilpasset funksjon:
def iterable_count(iterable): length = 0 for item in iterable: length+=1 return length
Eksempel:
def iterable_count(iterable): length = 0 for item in iterable: length+=1 return length languages = ['Python', 'Java', 'C++', 'PHP', 'nodeJS'] languages_length = iterable_count(languages) print('Lengden på listen ved hjelp av tilpasset funksjon er: ',languages_length)
Output:
Lengden på listen ved hjelp av tilpasset funksjon er: 5
Analyse av de tre metodene
La oss se på ytelsen til disse tre metodene, både for store og små lister.
Ytelsesanalyse for en stor liste:
import timeit # for ytelsesmåling import operator def iterable_count(iterable): length = 0 for item in iterable: length+=1 return length integer_list = list(range(1, 9999999)) # Lengdesjekk med len() start_time = timeit.default_timer() len_length = len(integer_list) print(timeit.default_timer() - start_time, 'Lengden på heltallslisten med len() er: ',len_length) # Lengdesjekk med operator.length_hint start_time = timeit.default_timer() len_length = operator.length_hint(integer_list) print(timeit.default_timer() - start_time, 'Lengden på heltallslisten med length_hint er: ',len_length) # Lengdesjekk med tilpasset funksjon start_time = timeit.default_timer() iterable_count_length = iterable_count(integer_list) print(timeit.default_timer() - start_time, 'Lengden på heltallslisten med tilpasset funksjon er: ',iterable_count_length)
Output:
3.957189619541168e-06 Lengden på heltallslisten med len() er: 9999998 3.0621886253356934e-06 Lengden på heltallslisten med length_hint er: 9999998 0.4059128537774086 Lengden på heltallslisten med tilpasset funksjon er: 9999998
Som vi ser, er `length_hint` raskest (3.0621886253356934e-06) for store datamengder. Dette skyldes at `length_hint` er implementert i CPython runtime og er en optimalisert Python-wrapper.
Ytelsesanalyse for en liten liste:
import timeit # for ytelsesmåling import operator def iterable_count(iterable): length = 0 for item in iterable: length+=1 return length integer_list = list(range(1, 100)) # Lengdesjekk med len() start_time = timeit.default_timer() len_length = len(integer_list) print(timeit.default_timer() - start_time, 'Lengden på heltallslisten med len() er: ',len_length) # Lengdesjekk med operator.length_hint start_time = timeit.default_timer() len_length = operator.length_hint(integer_list) print(timeit.default_timer() - start_time, 'Lengden på heltallslisten med length_hint er: ',len_length) # Lengdesjekk med tilpasset funksjon start_time = timeit.default_timer() iterable_count_length = iterable_count(integer_list) print(timeit.default_timer() - start_time, 'Lengden på heltallslisten med tilpasset funksjon er: ',iterable_count_length)
Output:
7.813796401023865e-07 Lengden på heltallslisten med len() er: 99 1.1278316378593445e-06 Lengden på heltallslisten med length_hint er: 99 3.462657332420349e-06 Lengden på heltallslisten med tilpasset funksjon er: 99
For mindre lister er `len()` raskere (7.813796401023865e-07). I begge tilfeller tar vår tilpassede funksjon lengre tid enn de andre metodene.
Konklusjon
I denne artikkelen har vi sett på forskjellige måter å finne lengden på en liste i Python, og vi har analysert ytelsen til disse metodene. For de fleste bruksområder er den innebygde funksjonen `len()` det beste valget på grunn av sin enkelhet og effektivitet. Hvis du derimot jobber med svært store datamengder, kan `length_hint` være et raskere alternativ. Det er viktig å merke seg at den tilpassede funksjonen med teller generelt er mindre effektiv enn de innebygde alternativene, men kan være et nyttig pedagogisk verktøy for å forstå hvordan lengdeberegning fungerer.