В тази статия виждаме как да проверим дължината на списък в някои от лесните стъпки и анализираме кой е по-добър.
Съдържание
Какво е 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. Не се предлага като другите вградени оператори.
Примерен фрагмент
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), когато данните са в хиляди или по-малко.
И в двата случая нашата персонализирана функция с брояч отнема повече време от двата метода.
Заключение
В тази статия разбираме различни начини за проверка на дължината на списъка и как те бързо проверяват дължината на списъка.