Перевірте довжину списку в Python за 3 простих кроки

Визначення розміру списку в Python: різні підходи

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

Що таке список у Python?

Список у Python – це упорядкована колекція елементів, яка може зберігати дані різних типів. Один список може містити цілі числа, числа з плаваючою комою, текстові рядки, булеві значення та навіть інші списки.

Наведемо кілька прикладів створення списків:

int_list = [1, 2, 3, 4, 5]
print(int_list)  # Виведе: [1, 2, 3, 4, 5]

float_list = [1.1, 2.2, 3.3, 4.4, 5.5]
print(float_list) # Виведе: [1.1, 2.2, 3.3, 4.4, 5.5]

string_list = ['Geekflare', 'Cloudflare', 'Amazon']
print(string_list) # Виведе: ['Geekflare', 'Cloudflare', 'Amazon']

boolean_list = [True, False]
print(boolean_list) # Виведе: [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) # Виведе: [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) # Виведе: [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) # Виведе: [1, 1.1, 'techukraine.net', True, [1, 1.1, 'Geekflare', True]]

Обидва методи створюють ідентичні списки. Списки Python є змінними, допускають повторення елементів та доступні за індексом.

Методи визначення довжини списку

Існує кілька способів визначити довжину списку в Python:

  • Використання вбудованої функції len().
  • Застосування методу length_hint з модуля operator.
  • Створення власної функції з лічильником.

Спосіб 1: Застосування вбудованої функції len()

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

Приклад:

languages = ['Python', 'Java', 'C++', 'PHP', 'nodeJS']
languages_length = len(languages)
print('Довжина списку мов:', languages_length)

Виведе:

Довжина списку мов: 5

Якщо у вас не встановлено Python, ви можете скористатися онлайн-компілятором для тестування коду.

Спосіб 2: Використання методу length_hint з модуля operator

Метод length_hint з модуля operator призначений для отримання наближеної довжини ітерованого об’єкта. Його можна застосовувати до списків, множин, кортежів та словників. На відміну від вбудованої len(), він потребує імпорту модуля operator.

Приклад:

import operator
languages = ['Python', 'Java', 'C++', 'PHP', 'nodeJS']
languages_length = operator.length_hint(languages)
print('Довжина списку мов (через operator.length_hint):', languages_length)

Виведе:

Довжина списку мов (через operator.length_hint): 5

Спосіб 3: Створення власної функції з лічильником

Цей метод передбачає використання циклу for і лічильника для визначення довжини списку. Ми створимо власну функцію, яка прийматиме ітерований об’єкт як аргумент і повертатиме його довжину.

Фрагмент функції:

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('Довжина списку мов (через власну функцію):', languages_length)

Виведе:

Довжина списку мов (через власну функцію): 5

Аналіз трьох методів

Розглянемо продуктивність кожного методу на великих та малих списках.

Аналіз продуктивності на великому списку

import timeit
import operator

def iterable_count(iterable):
  length = 0
  for item in iterable:
    length += 1
  return length

integer_list = list(range(1, 9999999))

start_time = timeit.default_timer()
len_length = len(integer_list)
print(timeit.default_timer() - start_time, 'Довжина списку (len()):', len_length)

start_time = timeit.default_timer()
len_length = operator.length_hint(integer_list)
print(timeit.default_timer() - start_time, 'Довжина списку (length_hint):', len_length)

start_time = timeit.default_timer()
iterable_count_length = iterable_count(integer_list)
print(timeit.default_timer() - start_time, 'Довжина списку (власна функція):', iterable_count_length)

Виведе:

3.957189619541168e-06 Довжина списку (len()): 9999998
3.0621886253356934e-06 Довжина списку (length_hint): 9999998
0.4059128537774086 Довжина списку (власна функція): 9999998

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

Аналіз продуктивності на малому списку

import timeit
import operator

def iterable_count(iterable):
  length = 0
  for item in iterable:
    length+=1
  return length

integer_list = list(range(1, 100))

start_time = timeit.default_timer()
len_length = len(integer_list)
print(timeit.default_timer() - start_time, 'Довжина списку (len()):', len_length)

start_time = timeit.default_timer()
len_length = operator.length_hint(integer_list)
print(timeit.default_timer() - start_time, 'Довжина списку (length_hint):', len_length)

start_time = timeit.default_timer()
iterable_count_length = iterable_count(integer_list)
print(timeit.default_timer() - start_time, 'Довжина списку (власна функція):', iterable_count_length)

Виведе:

7.813796401023865e-07 Довжина списку (len()): 99
1.1278316378593445e-06 Довжина списку (length_hint): 99
3.462657332420349e-06 Довжина списку (власна функція): 99

При невеликій кількості елементів функція len() є найшвидшою.

У обох випадках власна функція з лічильником є найповільнішою.

Висновок

У цій статті ми розглянули різні методи визначення довжини списку Python, а також проаналізували їх продуктивність. Вбудована функція len() є найоптимальнішою для більшості випадків. Метод length_hint може бути ефективнішим при роботі з дуже великими списками, проте потребує імпорту модуля. Створення власної функції з лічильником є менш продуктивним варіантом.