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

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

Що таке список 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), коли дані містять тисячі або менше.

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

Висновок

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