Як знайти довжину списку в Python

Як знайти довжину списку в Python

Список, який є невід’ємною частиною програмування на Python, має вивчатися всіма користувачами Python, а знання його корисності та операцій є важливим і завжди плюсом.

У списках виконується багато операцій, але в цій статті ми обговоримо довжину списку. Довжина списку означає кількість елементів, які він містить. Ми розглянемо 8 різних методів визначення довжини списку Python .

приклад:



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

Знайти довжину списку в Python

Нижче наведено методи, які ми розглянемо в цій статті.

1. Знайдіть довжину списку за допомогою функції len().

Python тільки() функція є вбудованою функцією в Python. Його можна використовувати, щоб знайти довжину об’єкта, передавши об’єкт у круглі дужки функції len.

Python3




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

Вихід:

The length of list is: 3 

Часова складність: O(n), де n - довжина списку
Допоміжний простір: О(1)

2. Знайти довжину списку за допомогою простого методу

У цьому методі просто виконується цикл і збільшується лічильник до останнього елемента списку, щоб дізнатися його кількість. Це найосновніша стратегія, яку можна застосувати за відсутності інших існуючих методів.

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

Вихід:

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

Часова складність: O(n)
Допоміжний простір: О(1)

3. Знайдіть довжину списку за допомогою методу length_hint().

Цей метод є менш відомим для визначення довжини списку. Цей конкретний метод визначено в класі операторів, і він також може сказати ні. елементів, присутніх у списку. Тут ми знаходимо довжину списку за допомогою len() і 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))>

Вихід:

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

4. Знайдіть довжину списку за допомогою функції sum().

Використовуйте ітерацію всередині суми та з кожною ітерацією додайте один, і в кінці ітерації ми отримаємо загальну довжину списку.

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

Вихід:

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

5. Знайдіть довжину списку за допомогою розуміння списку

Ініціалізувати список викликів список_тестів з деякими значеннями, а потім ініціалізуйте змінну з назвою length до 0. Використовуйте розуміння списку, щоб створити послідовність одиниць для кожного елемента в test_list.

Це створить список з таких же довжини, як test_list. Тепер скористайтеся функцією sum(), щоб підсумувати всі в списку, створеному розуміння списку . Призначте суму змінній довжини. Вивести змінну довжини.

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

Вихід

Length of list using list comprehension is: 5 

Часова складність: Розуміння списку створює новий список довжиною, що дорівнює довжині test_list. Потім функція sum() повторює цей список, щоб обчислити суму. Таким чином, часова складність цього алгоритму дорівнює O(N), де N — довжина test_list.
Допоміжний простір: Алгоритм створює новий список одиниць довжиною, що дорівнює довжині test_list, використовуючи розуміння списку. Тому складність допоміжного простору також дорівнює O(N), де N — це довжина test_list.

6. Знайдіть довжину списку за допомогою рекурсії

Ми можемо використовувати a рекурсивна функція що займає список lst як вхідні дані та рекурсивно викликає себе, передаючи фрагмент списку, який виключає перший елемент, доки список не стане порожнім.

Базовий випадок — коли список порожній, у цьому випадку функція повертає 0. В іншому випадку вона додає 1 до результату виклику функції з решти списку.

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>

Вихід

The length of the list is: 5 

Часова складність: O(n), де n - довжина списку. Це пояснюється тим, що функція здійснює n рекурсивних викликів, кожен з яких займає O(1) часу, а також виконується O(1) роботи на кожному рівні за межами рекурсивного виклику.
Складність простору: O(n), де n - довжина списку. Це пояснюється тим, що функція створює n стекових кадрів у стеку викликів завдяки рекурсивним викликам.

7. Знайдіть довжину списку за допомогою функції enumerate().

Python enumerate() метод додає лічильник до ітерованого і повертає його у формі об’єкта перерахування.

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

Вихід

5 

8. Знайдіть довжину списку за допомогою колекцій

Крім того, ви також можете використовувати сума() разом із методом values() функції Колекції Об'єкт лічильника для отримання довжини списку.

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>

Вихід

Length of list using Counter() is: 5 

Часова складність: O(n), де n - довжина списку. Це пояснюється тим, що функція Counter() має часову складність O(n), коли застосовується до списку довжиною n, а метод values() і функція sum() мають часову складність O(n). до списку довжини n.
Космічна складність: O(n), як функція Counter(), створює словник із n пар ключ-значення, кожна з яких представляє елемент і його кількість у списку відповідно. Цей словник займає O(n) місця.

Аналіз продуктивності: Naive проти Python len() проти Python length_hint()

Вибираючи серед альтернатив, завжди необхідно мати вагому причину, чому вибрати один над іншим. У цьому розділі аналізується час, який потрібно для виконання всіх з них, щоб запропонувати кращий вибір для використання.

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

Вихід:

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 

На наведених нижче зображеннях чітко видно, що витрачений час дорівнює наївний>> length_hint()> len() , але витрачений час сильно залежить від ОС і деяких її параметрів.

У двох послідовних заходах ви можете отримати контрастні результати, насправді іноді наївному потрібно менше часу з трьох. Можливі всі 6 можливих перестановок.

naive> len()> length_hint()

naive> len()=length_hint()

naive> length_hint()>len()

naive> length_hint()> len()

Ми обговорили 8 різних методів визначення довжини списку в Python. Ми також провели аналіз продуктивності, щоб визначити, який метод є найкращим.

Щоб визначити довжину списку, можна скористатися будь-яким із наведених вище методів. Знайти довжину списку дуже корисно, коли ви маєте справу з величезними списками, і вам потрібно перевірити кількість записів.

Перегляньте інші сторінки зі списками Python:

  • Методи Python List
  • Вправа зі списком Python
  • Просторова складність операцій зі списками в Python


Кращі Статті

Категорія

Цікаві Статті