[Python]얕은 복사 vs 깊은 복사
객체 복사의 종류와 특징에 대해 알아보자.
"""
Shallow Copy(얕은복사) & Deep Copy(깊은복사)
객체 복사의 종류 : Copy, Shallow Copy, Deep Copy
"""
# Copy
a_list = [1, 2, 3, [4, 5, 6], [7, 8, 9]]
b_list = a_list
print(id(a_list), id(b_list))
"""
4365226560 4365226560
"""
b_list[2] = 100
print('a_list = ', a_list)
print('b_list = ', b_list)
"""
a_list = [1, 2, 100, [4, 5, 6], [7, 8, 9]]
b_list = [1, 2, 100, [4, 5, 6], [7, 8, 9]]
"""
b_list[3][2] = 100
print('a_list = ', a_list)
print('b_list = ', b_list)
"""
a_list = [1, 2, 100, [4, 5, 100], [7, 8, 9]]
b_list = [1, 2, 100, [4, 5, 100], [7, 8, 9]]
"""
# Shallow Copy
import copy
c_list = [1, 2, 3, [4, 5, 6], [7, 8, 9]]
d_list = copy.copy(c_list)
print(id(c_list), id(d_list))
"""
4369118336 4369118208
"""
d_list[1] = 100
print('c list = ', c_list)
print('d list = ', d_list)
"""
c list = [1, 2, 3, [4, 5, 6], [7, 8, 9]]
d list = [1, 100, 3, [4, 5, 6], [7, 8, 9]]
"""
d_list[3].append(1000)
d_list[4][1] = 10000
print('c list = ', c_list)
print('d list = ', d_list)
""" 내부 list는 얕은복사가 됐다.
c list = [1, 2, 3, [4, 5, 6, 1000], [7, 10000, 9]]
d list = [1, 100, 3, [4, 5, 6, 1000], [7, 10000, 9]]
"""
# Deep Copy
e_list = [1, 2, 3, [4, 5, 6], [7, 8, 9]]
f_list = copy.deepcopy(e_list)
print(id(e_list), id(f_list))
"""
4310603840 4310604416
"""
f_list[3].append(1_000)
f_list[4][1] = 10_000
print('e list = ', e_list)
print('f list = ', f_list)
"""
e list = [1, 2, 3, [4, 5, 6], [7, 8, 9]]
f list = [1, 2, 3, [4, 5, 6, 1000], [7, 10000, 9]]
"""
최신 댓글