Saraksts, kas ir Python programmēšanas neatņemama sastāvdaļa, ir jāapgūst visiem Python lietotājiem, un zināšanas par tā lietderību un darbībām ir ļoti svarīgas un vienmēr ir pluss.
Daudzas darbības tiek veiktas sarakstos, taču šajā rakstā mēs apspriedīsim saraksta garumu. Saraksta garums nozīmē tajā esošo elementu skaitu. Mēs apskatīsim 8 dažādas metodes, lai noteiktu saraksta garumu Python .
Piemērs:
Input: lst = [10,20,30,40] Output: 4 Explanation: The output is 4 because the length of the list is 4.>
Atrodiet saraksta garumu Python
Tālāk ir norādītas metodes, kuras mēs apskatīsim šajā rakstā:
- Izmantojot tikai() funkciju
- Izmantojot naivu metodi
- Izmantojot long_hint()
- Izmantojot summa () metodi
- Izmantojot a saraksta izpratne
- Izmantojot rekursija
- Izmantojot uzskaitīt funkciju
- Izmantojot Kolekcijas Modulis
1. Atrodiet saraksta garumu, izmantojot funkciju len().
Python tikai() funkcija ir Python iebūvēta funkcija. To var izmantot, lai atrastu objekta garumu, nododot objektu len funkcijas iekavās.
Python3
# Python len()> li> => [> 10> ,> 20> ,> 30> ]> n> => len> (li)> print> (> 'The length of list is: '> , n)> |
>
>
Izvade:
The length of list is: 3>
Laika sarežģītība: O(n), kur n ir saraksta garums
Palīgtelpa: O(1)
2. Atrodiet saraksta garumu, izmantojot naivo metodi
Izmantojot šo metodi, vienkārši palaiž cilpu un palielina skaitītāju līdz pēdējam saraksta elementam, lai uzzinātu tā skaitu. Šī ir visvienkāršākā stratēģija, ko var izmantot, ja nav citu pašreizējo paņēmienu.
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))> |
>
>
Izvade:
The list is : [1, 4, 5, 7, 8] Length of list using naive method is : 5>
Laika sarežģītība: O(n)
Palīgtelpa: O(1)
javascript tuvākais
3. Atrodiet saraksta garumu, izmantojot Long_hint() metodi
Šis paņēmiens ir mazāk pazīstams paņēmiens saraksta garuma noteikšanai. Šī konkrētā metode ir definēta operatoru klasē, un tā var arī pateikt nē. sarakstā esošajiem elementiem. Šeit mēs atrodam saraksta garumu, izmantojot len () un length_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))> |
>
>
Izvade:
The list is : [1, 4, 5, 7, 8] Length of list using len() is : 5 Length of list using length_hint() is : 5>
4. Atrodiet saraksta garumu, izmantojot sum() funkciju
Izmantojiet iterāciju summas iekšpusē un ar katru iterāciju pievienojiet vienu, un iterācijas beigās mēs iegūstam saraksta kopējo garumu.
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))> |
>
>
Izvade:
The list is : [1, 4, 5, 7, 8] Length of list using len() is : 5 Length of list using length_hint() is : 5>
5. Atrodiet saraksta garumu, izmantojot saraksta izpratni
Inicializējiet sarakstu ar nosaukumu testa_saraksts ar dažām vērtībām, tad inicializējiet mainīgo, ko sauc par garumu, uz 0. Izmantojiet saraksta izpratni, lai ģenerētu vieninieku secību katram elementam test_list.
Tādējādi tiks izveidots saraksts ar tādiem pašiem garumiem kā test_list. Tagad izmantojiet funkciju sum(), lai summētu visus sarakstā, ko ģenerē saraksta izpratne . Piešķiriet summu garuma mainīgajam. Izdrukājiet garuma mainīgo.
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)> |
fon Neimaņa arhitektūra
>
>Izvade
Length of list using list comprehension is: 5>
Laika sarežģītība: Saraksta izpratne izveido jaunu sarakstu, kura garums ir vienāds ar testa_saraksta garumu. Funkcija summa () pēc tam atkārto šo sarakstu, lai aprēķinātu summu. Tāpēc šī algoritma laika sarežģītība ir O(N), kur N ir testa_saraksta garums.
Palīgtelpa: Algoritms izveido jaunu sarakstu ar tiem, kuru garums ir vienāds ar testa_saraksta garumu, izmantojot saraksta izpratni. Tāpēc arī palīgtelpas sarežģītība ir O(N), kur N ir testa_saraksta garums.
6. Atrodiet saraksta garumu, izmantojot rekursiju
Mēs varam izmantot a rekursīvā funkcija tas aizņem sarakstu lst kā ievadi un rekursīvi izsauc sevi, nododot saraksta daļu, kas izslēdz pirmo elementu, līdz saraksts ir tukšs.
Bāzes gadījums ir tad, kad saraksts ir tukšs, un tādā gadījumā funkcija atgriež 0. Pretējā gadījumā tā pievieno 1 funkcijas izsaukšanas rezultātam pārējā sarakstā.
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> |
>
>Izvade
The length of the list is: 5>
Laika sarežģītība: O(n) kur n ir saraksta garums. Tas ir tāpēc, ka funkcija veic n rekursīvus zvanus, katrs aizņem O(1) laiku, un katrā līmenī ārpus rekursīvā izsaukuma tiek veikts arī O(1) darbs.
Telpas sarežģītība: O(n) kur n ir saraksta garums. Tas ir tāpēc, ka funkcija rekursīvo zvanu dēļ izveido n steka kadrus zvanu stekā.
7. Atrodiet saraksta garumu, izmantojot funkciju enumerate().
Python uzskaitīt () metode pievieno iterējamam skaitītāju un atgriež to uzskaitoša objekta veidā.
Python3
# 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)> |
>
>Izvade
apaļa matemātika java
5>
8. Izmantojot kolekcijas, atrodiet saraksta garumu
Alternatīvi varat izmantot arī summa () funkcija kopā ar vērtības() metodi Kolekcijas Skaitītāja objekts, lai iegūtu saraksta garumu.
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> |
>
>Izvade
Length of list using Counter() is: 5>
Laika sarežģītība: O(n), kur n ir saraksta garums. Tas ir tāpēc, ka funkcijas Counter() laika sarežģītība ir O(n), kad to lieto sarakstam ar garumu n, un vērtības() metodei un sum() funkcijai ir O(n) laika sarežģītība, kad tiek lietota. uz sarakstu ar garumu n.
Telpas sarežģītība: O(n) kā funkcija Counter() izveido vārdnīcu ar n atslēgu-vērtību pāriem, no kuriem katrs attēlo attiecīgi elementu un tā skaitu sarakstā. Šī vārdnīca aizņem O(n) vietu.
Veiktspējas analīze: Naive vs Python len() vs Python length_hint()
Izvēloties kādu no alternatīvām, vienmēr ir nepieciešams pamatots iemesls, kāpēc izvēlēties vienu, nevis otru. Šajā sadaļā tiek veikta laika analīze par to, cik daudz laika nepieciešams visu to izpildei, lai piedāvātu labāku izvēli.
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)> |
>
>
Izvade:
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>
Zemāk esošajos attēlos var skaidri redzēt, ka aizņemtais laiks ir naivs>> long_hint()> len() , taču nepieciešamais laiks lielā mērā ir atkarīgs no OS un vairākiem tās parametriem.
Divos secīgos braucienos jūs varat iegūt kontrastējošus rezultātus, patiesībā dažreiz naivumam ir nepieciešams vismazākais laiks no trim. Ir iespējamas visas 6 iespējamās permutācijas.
naivs> len()> garuma_mājiens()

naivs> len()=length_hint()

naivs> garums_mājiens()> len()

naivs> garums_mājiens()> len()
Mēs esam apsprieduši 8 dažādas metodes, kā Python noteikt saraksta garumu. Mēs esam arī veikuši veiktspējas analīzi, lai pārbaudītu, kura metode ir labākā.
Lai noteiktu saraksta garumu, varat izmantot jebkuru no iepriekš minētajām metodēm. Saraksta garuma atrašana ir ļoti noderīga, strādājot ar milzīgiem sarakstiem un vēlaties pārbaudīt ierakstu skaitu.
prioritārā rinda java
Apskatiet citas Python sarakstu lapas:
- Python saraksta metodes
- Python saraksta vingrinājums
- Saraksta operāciju telpas sarežģītība Python