logo

Ako nájsť dĺžku zoznamu v Pythone

Zoznam, ktorý je neoddeliteľnou súčasťou programovania v Pythone, sa musia naučiť všetci používatelia Pythonu a znalosť jeho užitočnosti a operácií je nevyhnutná a vždy výhodou.

Mnoho operácií sa vykonáva v zoznamoch, ale v tomto článku budeme diskutovať o dĺžke zoznamu. Dĺžka zoznamu znamená počet prvkov, ktoré má. Pozrieme sa na 8 rôznych metód na zistenie dĺžky zoznamu Python .



Príklad:

  Input:   lst = [10,20,30,40]   Output:   4   Explanation:   The output is 4 because the length of the list is 4.>

Nájdite dĺžku zoznamu v Pythone

Nižšie sú uvedené metódy, ktorým sa budeme venovať v tomto článku:

1. Nájdite dĺžku zoznamu pomocou funkcie len().

Python len() funkcia je vstavaná funkcia v Pythone. Môže sa použiť na nájdenie dĺžky objektu prechodom objektu do zátvoriek funkcie len.



Python3






# Python len()> li>=> [>10>,>20>,>30>]> n>=> len>(li)> print>(>'The length of list is: '>, n)>

>

>

Výkon:

The length of list is: 3>

Časová zložitosť: O(n), kde n je dĺžka zoznamu
Pomocný priestor: O(1)

2. Nájdite dĺžku zoznamu pomocou naivnej metódy

Pri tejto metóde stačí spustiť cyklus a zvýšiť počítadlo až do posledného prvku zoznamu, aby ste poznali jeho počet. Toto je najzákladnejšia stratégia, ktorú možno použiť pri absencii iných súčasných techník.

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

>

>

Výkon:

The list is : [1, 4, 5, 7, 8] Length of list using naive method is : 5>

Časová zložitosť: O(n)
Pomocný priestor: O(1)

filmy z Indie

3. Nájdite dĺžku zoznamu pomocou metódy length_hint().

Táto technika je menej známa technika zisťovania dĺžky zoznamu. Táto konkrétna metóda je definovaná v triede operátorov a môže tiež povedať nie. prvkov prítomných v zozname. Tu zisťujeme dĺžku zoznamu pomocou len() a 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))>

>

>

Výkon :

The list is : [1, 4, 5, 7, 8] Length of list using len() is : 5 Length of list using length_hint() is : 5>

4. Nájdite dĺžku zoznamu pomocou funkcie sum().

Použite iteráciu vo vnútri súčtu a s každou iteráciou pridáte jednu a na konci iterácie dostaneme celkovú dĺžku zoznamu.

Python3

história verzií systému Android




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

>

>

Výkon:

The list is : [1, 4, 5, 7, 8] Length of list using len() is : 5 Length of list using length_hint() is : 5>

5. Nájdite dĺžku zoznamu pomocou porozumenia zoznamu

Inicializujte zoznam tzv test_list s niektorými hodnotami potom inicializujte premennú s názvom length na 0. Použite porozumenie zoznamu na vygenerovanie postupnosti jednotiek pre každý prvok v zozname testov.

Tým sa vytvorí zoznam tých, ktoré majú rovnakú dĺžku ako test_list. Teraz použite funkciu sum() na sčítanie všetkých položiek v zozname vygenerovanom pomocou porozumenie zoznamu . Priraďte súčet k premennej dĺžky. Vytlačte premennú dĺžky.

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

>

>

Výkon

Length of list using list comprehension is: 5>

Časová zložitosť: Porozumenie zoznamu vytvorí nový zoznam s dĺžkou rovnajúcou sa dĺžke testovacieho zoznamu. Funkcia sum() potom iteruje tento zoznam a vypočíta súčet. Preto je časová zložitosť tohto algoritmu O(N), kde N je dĺžka zoznamu testov.
Pomocný priestor: Algoritmus vytvorí nový zoznam s dĺžkou rovnajúcou sa dĺžke test_list pomocou porozumenia zoznamu. Zložitosť pomocného priestoru je teda tiež O(N), kde N je dĺžka zoznamu testov.

6. Nájdite dĺžku zoznamu pomocou rekurzie

Môžeme použiť a rekurzívna funkcia to chce zoznam lst ako vstup a rekurzívne sa volá, pričom sa odovzdáva časť zoznamu, ktorá vylučuje prvý prvok, kým zoznam nie je prázdny.

Základný prípad je, keď je zoznam prázdny, v takom prípade funkcia vráti 0. V opačnom prípade pridá 1 k výsledku volania funkcie na zvyšku zoznamu.

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>

k algoritmu najbližšieho suseda

>

>

Výkon

The length of the list is: 5>

Časová zložitosť: O(n) kde n je dĺžka zoznamu. Je to preto, že funkcia vykoná n rekurzívnych volaní, z ktorých každé trvá O(1) čas a na každej úrovni sa mimo rekurzívneho volania vykoná aj O(1) práca.
Zložitosť priestoru: O(n) kde n je dĺžka zoznamu. Je to preto, že funkcia vytvára n zásobníkových rámcov v zásobníku hovorov v dôsledku rekurzívnych volaní.

7. Nájdite dĺžku zoznamu pomocou funkcie enumerate().

Python enumerate() metóda pridáva počítadlo do iterovateľného a vracia ho vo forme enumeračného objektu.

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

>

>

Výkon

5>

8. Nájdite dĺžku zoznamu pomocou kolekcií

Prípadne môžete použiť aj suma() spolu s metódou values() pre zbierky Počítadlo objekt na získanie dĺžky zoznamu.

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>

>

>

Výkon

Length of list using Counter() is: 5>

Časová zložitosť: O(n), kde n je dĺžka zoznamu. Je to preto, že funkcia Counter() má časovú zložitosť O(n), keď sa použije na zoznam dĺžky n, a metóda values() a funkcia sum() majú pri aplikácii časovú zložitosť O(n). na zoznam dĺžky n.
Zložitosť priestoru: O(n) ako funkcia Counter() vytvorí slovník s n pármi kľúč – hodnota, z ktorých každý predstavuje prvok a jeho počet v zozname. Tento slovník zaberá O(n) miesta.

Analýza výkonu: Naivná vs Python len() vs Python length_hint()

Pri výbere medzi alternatívami je vždy potrebné mať opodstatnený dôvod, prečo si vybrať jednu pred druhou. V tejto časti je vykonaná časová analýza toho, koľko času je potrebné na vykonanie všetkých z nich, aby sa ponúkla lepšia voľba na použitie.

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

>

>

Výkon:

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>

Na obrázkoch nižšie je jasne vidieť, že zaberaný čas je naivné>> length_hint()> len() , ale čas závisí vo veľkej miere od operačného systému a niekoľkých jeho parametrov.

V dvoch po sebe idúcich behoch môžete získať kontrastné výsledky, v skutočnosti niekedy naivné zaberie najmenej času z troch. Všetkých možných 6 permutácií je možných.

naivný> len()> length_hint()

naivný> len()=dĺžka_hint()

naivný> length_hint()>len()

naivný> length_hint()> len()

Diskutovali sme o 8 rôznych metódach na nájdenie dĺžky zoznamu v Pythone. Urobili sme aj analýzu výkonnosti, aby sme skontrolovali, ktorá metóda je najlepšia.

Na zistenie dĺžky zoznamu môžete použiť ktorúkoľvek z vyššie uvedených metód. Hľadanie dĺžky zoznamu je veľmi užitočné, keď sa zaoberáte veľkými zoznamami a chcete skontrolovať počet záznamov.

usa koľko miest

Pozrite si ďalšie stránky so zoznamami Python: