다차원 리스트

참고 : 널널한 교수의 코딩 클래스


방법 1) [[0]*cols]*rows

multidim_list1.py

import time, sys
rows,cols=10000,100000

time1=time.time()
list_ = [[0]*cols]*rows
time2=time.time()
print("time : {:10.10f}".format(time2-time1))

방법 2) [[0]*cols for _ in range(rows)]

multidim_list2.py

import time, sys
rows,cols=10000,100000

time1=time.time()
list_ = [[0]*cols for _ in range(rows)]
time2=time.time()
print("time : {:10.10f}".format(time2-time1))

비교

PS C:\Users\LSH\Desktop\advanced_python> python multidim_list1.py
time : 0.0010018349

PS C:\Users\LSH\Desktop\advanced_python> python multidim_list2.py
time : 7.1857817173


방법 1) 이 더 빠른 이유?

방법 1

  • 객체수가 더 적다 & 참조도 더 적다 -> 빠르다

figure2


방법 2

figure2


장/단점?

but 방법 1)의 경우…아래와 같은 문제 발생

방법 1)

>>> list_ =[[0]*5]*3
>>> list_
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
>>> list_[0][0]=100

>>> list_
[[100, 0, 0, 0, 0], [100, 0, 0, 0, 0], [100, 0, 0, 0, 0]]

방법 2)

>>> list_ =[[0]*5 for _ in range(3)]
>>> list_[0][0]=100

>>> list_
[[100, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]