У цій статті ми побачимо, як перевірити довжину списку за допомогою кількох простих кроків і проаналізуємо, який із них кращий.
Що таке список Python?
Список — це колекція масивів у Python, яка здатна зберігати в ньому кілька типів даних. Він може зберігати ціле число, число з плаваючою точкою, рядок, логічний чи навіть список у списку.
int_list = [1, 2, 3, 4, 5] print(int_list) # output -> [1, 2, 3, 4, 5] float_list = [1.1, 2.2, 3.3, 4.4, 5.5] print(float_list) # output -> [1.1, 2.2, 3.3, 4.4, 5.5] string_list = ['Geekflare', 'Cloudflare', 'Amazon'] print(string_list) # output -> ['Geekflare', 'Cloudflare', 'Amazon'] boolean_list = [True, False] print(boolean_list) # output -> [True, False] nested_list = [[1, 2], [1.1, 2.2], ['Geekflare', 'Cloudflare'], [True, False]] print(nested_list) # [[1, 2], [1.1, 2.2], ['Geekflare', 'Cloudflare'], [True, False]] different_datatype_list = [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]] print(different_datatype_list) # output -> [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]]
Списки Python можна створювати за допомогою квадратної дужки або функції конструктора списків.
square_bracket_list = [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]] print(square_bracket_list) # output -> [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]] constructor_list = list((1, 1.1, 'techukraine.net', True, [1, 1.1, 'Geekflare', True])) print(constructor_list) # output -> [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]]
Наведений вище square_bracket_list – це список, створений за допомогою квадратних дужок ([]), constructor_list — це список, створений за допомогою конструктора списку. Обидва створюють лише вихід списку.
Список може бути змінним, допускати дублікати в ньому та бути доступним за допомогою індексу.
Методи визначення довжини списку
- вбудована функція len().
- метод length_hint від оператора
- спеціальна функція та лічильник
Спосіб 1: вбудована функція len().
Len() — це вбудована функція Python, яка використовується для визначення довжини списку, а також для інших ітерацій, таких як Set, Tuples, Dictionary.
Приклад фрагмента
languages = ['Python', 'Java', 'C++', 'PHP', 'nodeJS'] languages_length = len(languages) print('Length of the Language List is: ',languages_length)
Вихід
Length of the Language List is: 5
Я сподіваюся, що у вас встановлено Python, якщо ні, ви можете скористатися онлайн-компілятором Python, щоб відпрацювати код.
Спосіб 2: метод length_hint від оператора
length_hint використовується для повернення довжини ітерованого об’єкта (наприклад, List, Set, Tuples, Dictionary). Він доступний у модулі оператора python. Не доступний, як інші вбудовані оператори.
Приклад фрагмента
import operator languages = ['Python', 'Java', 'C++', 'PHP', 'nodeJS'] languages_length = operator.length_hint(languages) print('Length of the Language List using Operator is: ',languages_length)
Вихід
Length of the Language List using Operator is: 5
Спосіб 3: Спеціальна функція та лічильник
У цьому методі для визначення довжини списку ми будемо використовувати традиційний метод за допомогою циклу for і лічильника.
Для цього ми напишемо функцію на python. який приймає список або інший ітерований елемент як аргумент і повертає довжину ітерованого.
Фрагмент спеціальної функції
def iterable_count(iterable): length = 0 for item in iterable: length+=1 return length
Приклад фрагмента
def iterable_count(iterable): length = 0 for item in iterable: length+=1 return length languages = ['Python', 'Java', 'C++', 'PHP', 'nodeJS'] languages_length = iterable_count(languages) print('Length of the Language List using Custom function is: ',languages_length)
Вихід
Length of the Language List using Custom function is: 5
Аналізуючи ці 3 методи
Аналіз продуктивності для великого списку
import timeit # for benchmarking & profiling import operator def iterable_count(iterable): length = 0 for item in iterable: length+=1 return length integer_list = list(range(1, 9999999)) #length check using len() start_time = timeit.default_timer() len_length = len(integer_list) print(timeit.default_timer() - start_time, 'Length of the Integer List using len() is: ',len_length) #length check using operator.length_hint start_time = timeit.default_timer() len_length = operator.length_hint(integer_list) print(timeit.default_timer() - start_time, 'Length of the Integer List using length_hint is: ',len_length) start_time = timeit.default_timer() iterable_count_length = iterable_count(integer_list) print(timeit.default_timer() - start_time, 'Length of the Integer List using Custom function is: ',iterable_count_length)
Вихід
3.957189619541168e-06 Length of the Integer List using len() is: 9999998 3.0621886253356934e-06 Length of the Integer List using length_hint is: 9999998 0.4059128537774086 Length of the Integer List using Custom function is: 9999998
Як ми бачимо, length_hint працює швидше (3.0621886253356934e-06), коли дані містять мільйони. Це тому, що підказки щодо довжини використовуються середою виконання CPython. Де це називається обгорткою пітона.
Аналіз продуктивності для невеликого списку
import timeit # for benchmarking & profiling import operator def iterable_count(iterable): length = 0 for item in iterable: length+=1 return length integer_list = list(range(1, 100)) #length check using len() start_time = timeit.default_timer() len_length = len(integer_list) print(timeit.default_timer() - start_time, 'Length of the Integer List using len() is: ',len_length) #length check using operator.length_hint start_time = timeit.default_timer() len_length = operator.length_hint(integer_list) print(timeit.default_timer() - start_time, 'Length of the Integer List using length_hint is: ',len_length) start_time = timeit.default_timer() iterable_count_length = iterable_count(integer_list) print(timeit.default_timer() - start_time, 'Length of the Integer List using Custom function is: ',iterable_count_length)
Вихід
7.813796401023865e-07 Length of the Integer List using len() is: 99 1.1278316378593445e-06 Length of the Integer List using length_hint is: 99 3.462657332420349e-06 Length of the Integer List using Custom function is: 99
Як ми бачимо, len() працює швидше (7.813796401023865e-07), коли дані містять тисячі або менше.
В обох випадках наша спеціальна функція з лічильником займає більше часу, ніж обидва методи.
Висновок
У цій статті ми розглянемо різні способи перевірки довжини списку та те, як вони швидко перевіряють довжину списку.