Sąrašą, kuris yra neatsiejama Python programavimo dalis, turi išmokti visi Python vartotojai, o žinoti apie jo naudingumą ir operacijas yra būtina ir visada privalumas.
Daugelis operacijų atliekamos sąrašuose, tačiau šiame straipsnyje aptarsime sąrašo ilgį. Sąrašo ilgis reiškia jame esančių elementų skaičių. Išnagrinėsime 8 skirtingus metodus, kad sužinotume sąrašo ilgį Python .
Pavyzdys:
Input: lst = [10,20,30,40] Output: 4 Explanation: The output is 4 because the length of the list is 4.>
Raskite sąrašo ilgį Python
Žemiau pateikiami metodai, kuriuos aptarsime šiame straipsnyje:
- Naudojant tik() funkcija
- Naiviojo metodo naudojimas
- Naudojant long_hint()
- Naudojant suma() metodas
- Naudojant a sąrašo supratimas
- Naudojant rekursija
- Naudojant išvardinti funkcija
- Naudojant Kolekcijos Modulis
1. Raskite sąrašo ilgį naudodamiesi len() funkcija
Python tik() funkcija yra integruota Python funkcija. Jis gali būti naudojamas norint rasti objekto ilgį, perduodant objektą funkcijos len skliaustuose.
Python3
# Python len()> li>=> [>10>,>20>,>30>]> n>=> len>(li)> print>(>'The length of list is: '>, n)> |
>
>
Išvestis:
The length of list is: 3>
Laiko sudėtingumas: O(n), kur n yra sąrašo ilgis
Pagalbinė erdvė: O(1)
2. Raskite sąrašo ilgį naudodami naivų metodą
Taikant šį metodą, tiesiog paleidžiama kilpa ir padidinamas skaitiklis iki paskutinio sąrašo elemento, kad sužinotumėte jo skaičių. Tai pati pagrindinė strategija, kurią galima naudoti, jei nėra kitų dabartinių metodų.
Python3
# Initializing list> test_list>=> [>1>,>4>,>5>,>7>,>8>]> # Printing test_list> print>(>'The list is : '> +> str>(test_list))> # Finding length of list using loop> # Initializing counter> counter>=> 0> for> i>in> test_list:> ># incrementing counter> >counter>=> counter>+> 1> # Printing length of list> print>(>'Length of list using naive method is : '> +> str>(counter))> |
>
>
Išvestis:
The list is : [1, 4, 5, 7, 8] Length of list using naive method is : 5>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(1)
Java pavadinimų konvencija
3. Raskite sąrašo ilgį naudodami long_hint() metodą
Šis metodas yra mažiau žinomas sąrašo ilgio nustatymo metodas. Šis konkretus metodas yra apibrėžtas operatoriaus klasėje ir taip pat gali pasakyti ne. sąraše esančių elementų. Čia mes randame sąrašo ilgį naudodami len () ir long_hint ()
Python3
from> operator>import> length_hint> # Initializing list> test_list>=> [>1>,>4>,>5>,>7>,>8>]> # Printing test_list> print>(>'The list is : '> +> str>(test_list))> # Finding length of list using len()> list_len>=> len>(test_list)> # Finding length of list using length_hint()> list_len_hint>=> length_hint(test_list)> # Printing length of list> print>(>'Length of list using len() is : '> +> str>(list_len))> print>(>'Length of list using length_hint() is : '> +> str>(list_len_hint))> |
>
>
Išvestis:
The list is : [1, 4, 5, 7, 8] Length of list using len() is : 5 Length of list using length_hint() is : 5>
4. Raskite sąrašo ilgį naudodami sum() funkciją
Naudokite iteraciją sumos viduje ir su kiekviena iteracija pridėkite po vieną ir iteracijos pabaigoje gauname bendrą sąrašo ilgį.
Python3
# Initializing list> test_list>=> [>1>,>4>,>5>,>7>,>8>]> # Printing test_list> print>(>'The list is : '> +> str>(test_list))> # Finding length of list> # using sum()> list_len>=> sum>(>1> for> i>in> test_list)> # Printing length of list> print>(>'Length of list using len() is : '> +> str>(list_len))> print>(>'Length of list using length_hint() is : '> +> str>(list_len))> |
>
>
Išvestis:
The list is : [1, 4, 5, 7, 8] Length of list using len() is : 5 Length of list using length_hint() is : 5>
5. Raskite sąrašo ilgį naudodami sąrašo supratimą
Inicijuokite sąrašą, vadinamą test_list su kai kuriomis reikšmėmis, tada inicijuokite kintamąjį, vadinamą ilgiu, į 0. Naudokite sąrašo supratimą, kad sugeneruotumėte vienetų seką kiekvienam test_list elementui.
Taip bus sukurtas tokio pat ilgio sąrašas kaip test_list. Dabar naudokite funkciją sum () norėdami susumuoti visus sąraše, kuriuos sugeneravo sąrašo supratimas . Priskirkite sumą ilgio kintamajam. Spausdinkite ilgio kintamąjį.
eilutės formatas
Python3
# Define the list to be used for the demonstration> test_list>=> [>1>,>4>,>5>,>7>,>8>]> # Calculate the length of the list using a list comprehension and the sum function> # The list comprehension generates a sequence of ones for each element in the list> # The sum function then sums all the ones to give the length of the list> length>=> sum>(>1> for> _>in> test_list)> # Print the length of the list> print>(>'Length of list using list comprehension is:'>, length)> |
>
>Išvestis
Length of list using list comprehension is: 5>
Laiko sudėtingumas: Sąrašo supratimas sukuria naują sąrašą, kurio ilgis yra lygus test_list ilgiui. Funkcija sum() tada kartoja šį sąrašą, kad apskaičiuotų sumą. Todėl šio algoritmo sudėtingumas laike yra O(N), kur N yra test_list ilgis.
Pagalbinė erdvė: Algoritmas sukuria naują sąrašą tų, kurių ilgis lygus test_list ilgiui, naudodamas sąrašo supratimą. Todėl pagalbinės erdvės sudėtingumas taip pat yra O(N), kur N yra test_list ilgis.
6. Raskite sąrašo ilgį naudodami rekursiją
Galime naudoti a rekursyvinė funkcija tam reikia sąrašą lst kaip įvestį ir rekursyviai iškviečia save, perduodama sąrašo atkarpą, išskiriančią pirmąjį elementą, kol sąrašas bus tuščias.
Bazinis atvejis yra tada, kai sąrašas tuščias. Tokiu atveju funkcija grąžina 0. Kitu atveju ji prideda 1 prie funkcijos iškvietimo likusioje sąrašo dalyje.
Python3
# Define a function to count the number of elements in a list using recursion> def> count_elements_recursion(lst):> ># Base case: if the list is empty, return 0> >if> not> lst:> >return> 0> ># Recursive case: add 1 to the count of the remaining elements in the list> >return> 1> +> count_elements_recursion(lst[>1>:])> # Test the function with a sample list> lst>=> [>1>,>2>,>3>,>4>,>5>]> print>(>'The length of the list is:'>, count_elements_recursion(lst))> # Output: The length of the list is: 5> |
>
>Išvestis
The length of the list is: 5>
Laiko sudėtingumas: O(n) čia n yra sąrašo ilgis. Taip yra todėl, kad funkcija atlieka n rekursinių iškvietimų, kurių kiekvienas užtrunka O(1) laiko, taip pat yra O(1) darbas kiekviename lygyje už rekursinio skambučio ribų.
Erdvės sudėtingumas: O(n) čia n yra sąrašo ilgis. Taip yra todėl, kad dėl rekursinių skambučių funkcija sukuria n krūvos kadrų skambučių krūvoje.
7. Raskite sąrašo ilgį naudodami funkciją enumerate().
Python išvardinti () metodas prideda skaitiklį prie iteruojamo objekto ir grąžina jį surašymo objekto forma.
Python3
santykinis subjektas
# python code to find the length> # of list using enumerate function> list1>=> [>1>,>4>,>5>,>7>,>8>]> s>=> 0> for> i, a>in> enumerate>(list1):> >s>+>=> 1> print>(s)> |
>
>Išvestis
5>
8. Raskite sąrašo ilgį naudodami kolekcijas
Arba taip pat galite naudoti suma() funkcija kartu su Value() metodu Kolekcijos Skaitiklio objektas, kad gautumėte sąrašo ilgį.
Python3
from> collections>import> Counter> # Initializing list> test_list>=> [>1>,>4>,>5>,>7>,>8>]> # Finding length of list using Counter()> list_len>=> sum>(Counter(test_list).values())> print>(>'Length of list using Counter() is:'>, list_len)> # This code is contributed by Edula Vinay Kumar Reddy> |
>
>Išvestis
Length of list using Counter() is: 5>
Laiko sudėtingumas: O(n), kur n yra sąrašo ilgis. Taip yra todėl, kad funkcijos Counter() laiko sudėtingumas yra O(n), kai tai taikoma n ilgio sąrašui, o metodo reikšmės() ir funkcijos suma() laiko sudėtingumas yra O(n), kai taikoma. į sąrašą, kurio ilgis n.
Erdvės sudėtingumas: O(n), kaip funkcija Counter(), sukuria žodyną su n raktų ir reikšmių porų, kurių kiekviena atitinkamai reiškia elementą ir jo skaičių sąraše. Šis žodynas užima O(n) vietos.
Našumo analizė: Naive vs Python len() vs Python long_hint()
Renkantis vieną iš alternatyvų, visada būtina turėti svarią priežastį, kodėl verta rinktis vieną, o ne kitą. Šioje skiltyje atliekama laiko analizė, nurodanti, kiek laiko reikia atlikti juos visoms, kad būtų pasiūlytas geresnis pasirinkimas.
Python3
from> operator>import> length_hint> import> time> # Initializing list> test_list>=> [>1>,>4>,>5>,>7>,>8>]> # Printing test_list> print>(>'The list is : '> +> str>(test_list))> # Finding length of list> # using loop> # Initializing counter> start_time_naive>=> time.time()> counter>=> 0> for> i>in> test_list:> ># incrementing counter> >counter>=> counter>+> 1> end_time_naive>=> str>(time.time()>-> start_time_naive)> # Finding length of list> # using len()> start_time_len>=> time.time()> list_len>=> len>(test_list)> end_time_len>=> str>(time.time()>-> start_time_len)> # Finding length of list> # using length_hint()> start_time_hint>=> time.time()> list_len_hint>=> length_hint(test_list)> end_time_hint>=> str>(time.time()>-> start_time_hint)> # Printing Times of each> print>(>'Time taken using naive method is : '> +> end_time_naive)> print>(>'Time taken using len() is : '> +> end_time_len)> print>(>'Time taken using length_hint() is : '> +> end_time_hint)> |
>
>
Išvestis:
The list is : [1, 4, 5, 7, 8] Time taken using naive method is : 2.6226043701171875e-06 Time taken using len() is : 1.1920928955078125e-06 Time taken using length_hint() is : 1.430511474609375e-06>
Žemiau esančiuose paveikslėliuose aiškiai matyti, kad užtruko laikas naivus>> long_hint()> len() , tačiau laikas labai priklauso nuo OS ir kelių jos parametrų.
Per du važiavimus iš eilės galite gauti kontrastingų rezultatų, iš tikrųjų kartais naivumas užtrunka mažiausiai laiko iš trijų. Galimos visos 6 galimos permutacijos.

naivus> len()> ilgio_užuomina()

naivus> len()=ilgio_užuomina()

naivus> ilgio_uomina()>len()

naivus> ilgio_užuomina()> len()
Aptarėme 8 skirtingus metodus, kaip nustatyti sąrašo ilgį Python. Taip pat atlikome našumo analizę, kad patikrintume, kuris metodas yra geriausias.
Norėdami sužinoti sąrašo ilgį, galite naudoti bet kurį iš aukščiau pateiktų metodų. Sąrašo ilgio paieška yra labai naudinga dirbant su didžiuliais sąrašais ir norint patikrinti įrašų skaičių.
sujungti rūšiuoti
Peržiūrėkite daugiau Python sąrašų puslapių:
- Python sąrašo metodai
- Python sąrašo pratimas
- Sąrašo operacijų erdvės sudėtingumas Python