이 기사에서는 몇 가지 쉬운 단계에서 목록의 길이를 확인하고 어느 것이 더 나은지 분석하는 방법을 살펴봅니다.
목차
파이썬 목록이란 무엇입니까?
목록은 여러 데이터 유형을 저장할 수 있는 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, 'koreantech.org', 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()은 목록의 길이와 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)의 길이를 반환하는 데 사용됩니다. 파이썬 연산자 모듈 내에서 사용할 수 있습니다. 다른 내장 연산자처럼 사용할 수 없습니다.
예시 스니펫
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: 사용자 정의 기능 및 카운터
List의 길이를 구하는 이 방법에서는 for-loop와 counter를 사용하는 전통적인 방법을 사용할 것입니다.
이를 위해 파이썬으로 함수를 작성할 것입니다. 목록이나 다른 이터러블을 인수로 취하고 이터러블의 길이를 반환합니다.
사용자 정의 기능 스니펫
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).
두 경우 모두 counter가 있는 사용자 정의 함수는 두 가지 방법보다 더 많은 시간이 걸립니다.
결론
이 기사에서는 목록의 길이를 확인하는 다양한 방법과 목록의 길이를 빠르게 확인하는 방법을 이해합니다.