창립일자: April-04, 2020 | 갱신일자: June-25, 2020 목록 또는 배열에 대한 사전 할당 스토리지는
프로그래머에게 일반적인 패턴입니다. 그들이 요소의 수를 미리 알 때. C++ 및 Java 와 달리 Python 에서는 사전 할당 된 모든 저장소를 일부 값으로 초기화해야합니다. 일반적으로 개발자는None,'',False및 0 과 같은 목적으로 잘못된 값을 사용합니다. 파이썬은 고정 된 크기의 목록을 만드는 여러 가지 방법을 제공합니다. 다른 성능 특성. 다른 접근 방식의 성능을 비교하기 위해 Python 의 표준을 사용합니다. 모듈 timeit. 작은 파이썬 코드의 실행 시간을 측정하는 편리한 방법을
제공합니다. *연산자를 사용하는 첫 번째이자 가장 빠른 방법은 지정된 목록을 반복합니다. 횟수. 백만 번의 반복 ( timeit에서 반복의 기본값)은 대략 117ms 또 다른 방법은 목록 이해와 함께 range 내장 함수를 사용하는 것입니다.파이썬에서 특정 크기의 목록을 만드는 방법
리스트를위한 사전 할당 저장소
거의 6 배 더 느리고 백만 회당 612ms 가 걸립니다.
>>> timeit("[None for _ in range(10)]") 0.6115895550028654세 번째 방법은 간단한 for 루프를 list.append()와 함께 사용하는 것입니다.
>>> a = [] >>> for _ in range(10): ... a.append(None) ... >>> a [None, None, None, None, None, None, None, None, None, None]루프를 사용하는 것이 가장 느린 방법이며 백만 회 반복을 완료하는 데 842ms 가 걸립니다.
>>> timeit("for _ in range(10): a.append(None)", setup="a=[]") 0.8420009529945673다른 순차 데이터 구조를위한 사전 할당 스토리지
순차 데이터 구조를위한 스토리지를 사전 할당하므로 array 내장 데이터를 사용하는 것이 좋습니다. 목록 대신 구조.
>>> from array import array >>> array('i',(0,)*10) array('i', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0])아래에서 볼 수 있듯이이 접근법은[None] * 10 다음으로 두 번째로 빠릅니다.
>>> timeit("array('i',(0,)*10)", setup="from array import array") 0.4557597979946877위의 순수한 파이썬 접근법을 과학 컴퓨팅을위한 NumPy 파이썬 패키지와 비교해 보자.
>>> from numpy import empty >>> empty(10) array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])NumPy 방식은 백만 회당 589ms 가 소요됩니다.
>>> timeit("empty(10)", setup="from numpy import empty") 0.5890094790011062그러나 NumPy 방식은 더 큰 목록의 경우 훨씬 빠릅니다.
결론은 작은 목록에 대해서는 [None] * 10 을 고수하는 것이 가장 좋지만 더 큰 순차적 데이터를 처리 할 때 NumPy 의 empty()에.
관련 문장 - Python List
파이썬에서 리스트의 size를 계산할 때 len() 함수를 사용하면 됩니다. len()은 다음과 같이 인자로 전달된 sequence(list, tuple 등)의 크기를 리턴합니다. len(s)
Return the length (the number of items) of an object. The argument may be a sequence (such as a string, bytes, tuple, list, or range) or a collection (such as a dictionary, set, or frozen set). list 또한
collection 및 sequence에 해당하며, 다음과 같이 len()으로 크기를 계산할 수 있습니다. my_list = []
print(len(my_list))
my_list = [10, 22, 19]
print(len(my_list)) Output:1. len()으로 리스트의 크기
2. tuple, dict, range의 크기 확인
tuple, dictionary, range의 크기도 len()으로 계산할 수 있습니다.
my_tuple = (10, 22, 19, 23) print(len(my_tuple)) my_dict = {1: 'a', 2: 'b'} print(len(my_dict)) my_range = range(1, 10) print(len(my_range))
Output:
3. byte, string의 길이
byte와 string의 크기도 len()으로 계산할 수 있습니다.
str = 'Python' print(len(str)) byte = b'Python' print(len(byte))
Output:
참고
- docs.python.org
- Python - 리스트 평균 구하기, 3가지 방법
- Python - 딕셔너리에서 최대값, 최소값 찾기
- Python - 문자열에서 특수문자 제거, 숫자 제거, 숫자만 남기기
- Python - 2차원 리스트(배열) 선언, 초기화
- Python - 두 리스트 비교, 4가지 방법
- Python - 문자열에서 문자의 Index 찾기
- Python - 리스트에서 최대, 최소 값 찾기
- Python - for문에서 index 사용하기, 3가지 방법
- Python 소수점 반올림, round() 예제
- 파이썬 주석 처리, 단축키 소개
- Python - String isdigit(), 문자열이 숫자인지 확인
- Python 소수점 버림, 4가지 방법
- Python - String Formatting의 다양한 방법 정리(%, Str formatting, f-stirng)
- Python - 파일을 읽고 한 줄씩 리스트에 저장
- Python - Text 파일 읽고 쓰는 방법 (read, write, append)
- Python - os.path.join(), 폴더와 파일명으로 Path 생성
- Python - 문자열에서 줄바꿈(\n) 제거, 3가지 방법
- Python - Switch Case 구현 방법 (Match Case)
- 우분투에 Python 3.10 설치하는 방법
- Python - 문자열에서 특정 문자 제거, 3가지 방법
- Python - 함수 정의 및 호출 방법