list
와 set
은 자료 구조 이름이 아닌 자료형 이름import time
# 0 ~ 1000000을 list 에 저장한다
test_list = [x for x in range(1000001)]
# 0 ~ 1000000을 set 에 저장한다
test_set = set([x for x in range(1000001)])
# 특정 데이터가 list 에 있는지 확인할 때 걸리는 시간 파악
t_0 = time.time()
print(1000000 in test_list)
t_1 = time.time()
print("list 에서 걸린 시간: {}".format(t_1 - t_0))
# 특정 데이터가 set 에 있는지 확인할 때 걸리는 시간 파악
t_0 = time.time()
print(1000000 in test_set)
t_1 = time.time()
print("set 에서 걸린 시간: {}".format(t_1 - t_0))
# True
# list 에서 걸린 시간: 0.011967658996582031
# True
# set 에서 걸린 시간: 5.245208740234375e-06 == 0.0000005245
👉
list
보다 약 3000배 빠른set
👉 항상set
이 좋은 자료형은 아님
👉 모든 경우에 제일 좋은 자료 구조는 없음
👉 상황에 따라 알맞은, 효율적인 자료 구조 존재
자료 구조는 데이터를 메모리에서 잘 사용하는 것이 목적
👉 임의 접근이 순차 접근보다 효율적이다
👉 자료 구조를 공부할 때 데이터에 임의 접근 [] 하고있다는 것 알아야
주소
보다 조금 더 포괄적인 표현주소 = 레퍼런스
라고 생각해도 무방1. x = 95
2. print(x + 5) == print(95 + 5)
1.1 : "X는 95다" 는 틀린 표현
1.2 : X는 95가 아닌 95가 담겨 있는 메모리 주소를 갖고 있음
1.3 : "X는 95를 가리킨다" 는 맞는 표현
2 : 실제로 변수를 사용할 때는 저장된 값을 알아서 받아옴
list1 = [1, 2]
list3 = [1, 2, 3]
list2 = list1
print(id(list1))
print(id(list2))
print(id(list3))
# 2034033767360
# 2034033767360
# 2034034079872