range()
- range()는 iterable(이터러블)을 생성한다.
- 데이터를 메모리에 보관하지 않는다.
- range()의 데이터 크기는 메모리와 관계 없다.
- range()는 항상 메모리가 작다.
- range()는 항상 동일한 크기의 메모리를 사용한다.
- range()는 반복문에서 리스트보다 빠르다.
따라서, 숫자와 관련된 반복문을 사용시에는 리스트보다 range()를 쓰자.
- (Good) for i in range(5):
- (Bad) for j in [0, 1, 2, 3, 4]:
< 코드 >
range()의 데이터 크기가 달라도 변수가 차지하는 메모리가 같을까? - 같다.
%reset -f
import sys
test_range_1 = range(0, 10)
test_range_2 = range(0, 100000)
test_range_3 = range(0, 10000000000)
print("< print >")
print(f"test_range_1 : {test_range_1}")
print(f"test_range_2 : {test_range_2}")
print(f"test_range_3 : {test_range_3}")
print("< type >")
print(f"type(test_range_1) : {type(test_range_1)}")
print(f"type(test_range_2) : {type(test_range_2)}")
print(f"type(test_range_3) : {type(test_range_3)}")
print("< memory id >")
print(f"id(test_range_1) : {id(test_range_1)}")
print(f"id(test_range_2) : {id(test_range_2)}")
print(f"id(test_range_3) : {id(test_range_3)}")
print("< memory size >")
print(f"sys.getsizeof(test_range_1) : {sys.getsizeof(test_range_1)}")
print(f"sys.getsizeof(test_range_2) : {sys.getsizeof(test_range_2)}")
print(f"sys.getsizeof(test_range_3) : {sys.getsizeof(test_range_3)}")
< 출력결과 >
< 코드 >
range()와 list의 크기 비교 - range()가 더 작다
%reset -f
import sys
test_list_1 = range(0, 10)
test_list_2 = list(test_list_1)
test_list_3 = [0, 1, 2, 3, 4, 5, 6, 7 ,8 ,9]
print("< print >")
print(f"test_list_1 : {test_list_1}")
print(f"test_list_2 : {test_list_2}")
print(f"test_list_3 : {test_list_3}")
print("< type >")
print(f"type(test_list_1) : {type(test_list_1)}")
print(f"type(test_list_2) : {type(test_list_2)}")
print(f"type(test_list_3) : {type(test_list_3)}")
print("< memory id >")
print(f"id(test_list_1) : {id(test_list_1)}")
print(f"id(test_list_2) : {id(test_list_2)}")
print(f"id(test_list_3) : {id(test_list_3)}")
print("< memory size >")
print(f"sys.getsizeof(test_list_1) : {sys.getsizeof(test_list_1)}")
print(f"sys.getsizeof(test_list_2) : {sys.getsizeof(test_list_2)}")
print(f"sys.getsizeof(test_list_3) : {sys.getsizeof(test_list_3)}")
< 출력결과 >
'Programming Language > Python' 카테고리의 다른 글
[Python] 클린코드란 (0) | 2023.06.11 |
---|---|
[Python] for, while 반복문과 else를 같이 쓰는 방법 (0) | 2023.06.05 |
[Python] sqlite3 이용하여 데이터 여러줄 한번에 입력하는 방법 (0) | 2023.04.06 |
[Python] sqlite3 이용하여 데이터 입력 및 출력하는 방법 (0) | 2023.04.06 |
[Python] dictionary를 json으로 변환하는 방법 (2) | 2023.03.21 |