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

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)

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




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

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.

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