Проверете дължината на списъка в Python в 3 лесни стъпки

В тази статия виждаме как да проверим дължината на списък в някои от лесните стъпки и анализираме кой е по-добър.

Какво е Python List?

Списъкът е колекция от масиви в 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, 'pctechbg.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. Не се предлага като другите вградени оператори.

  Коригирайте Halo Infinite, който продължава да се срива при стартиране

Примерен фрагмент

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. Където се нарича обвивка на питон.

  Как да добавите музика към вашата презентация на PowerPoint

Анализ на ефективността за малък списък

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), когато данните са в хиляди или по-малко.

И в двата случая нашата персонализирана функция с брояч отнема повече време от двата метода.

Заключение

В тази статия разбираме различни начини за проверка на дължината на списъка и как те бързо проверяват дължината на списъка.