Як знайти довжину списку в 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
Нижче наведено методи, які ми розглянемо в цій статті.
- Використання тільки() функція
- Використання наївного методу
- Використання length_hint()
- Використання сума() метод
- Використовуючи a розуміння списку
- Використання рекурсія
- Використання перелічувати функція
- Використання Колекції Модуль
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