Python/파이썬 심화

파이썬 시퀀스 (3)

monstro 2025. 8. 5. 21:06
728x90
반응형

- 개요

리스트를 사용하는 경우에서의 주의사항에 대해서 알아본다

리스트mutable 시퀀스얕은 복사로 인한 문제가 발생한다

얕은 복사 / 깊은 복사에 대한 사항은 다음의 페이지에서 확인할 수 있다

https://monstrosite.tistory.com/637

 

- 코드

m1 = [['~'] * 3 for _ in range(3)]
m2 = [['~'] * 3] * 3

print(m1)
print(m2)

# 값을 수정
m1[0][1] = 'X'
m2[0][1] = 'X'

print(m1)   
print(m2)   

print([id(i) for i in m1])
print([id(i) for i in m2])

 

두 개의 리스트를 생성하되, m1은 3개의 배열을 새롭게 생성하고 m2는 1개의 배열을 3개로 복사하여 생성한다

 

수정하기 이전의 값

 

수정하기 이전의 m1과 m2의 값을 출력하면 위와 같다

의도한 대로 3 X 3의 중첩배열을 생성하였다

 

수정한 이후의 값

 

수정한 이후의 m1과 m2의 값을 출력하면 위와 같다

의도와 다르게 m2에서는 모든 배열의 1번째 인덱스가 수정되었다

위와 같은 문제는 얕은 복사같은 메모리 주소를 참조하는 2개의 객체를 생성하였기 때문이다

 

Id 출력

 

실제로 Id를 확인해보면 m1의 경우 일일이 생성하여 메모리의 주소가 다르지만,

m2의 경우 메모리의 주소가 전부 동일한 것을 확인할 수 있다

728x90
반응형

'Python > 파이썬 심화' 카테고리의 다른 글

파이썬 시퀀스 (5)  (0) 2025.08.07
파이썬 시퀀스 (4)  (0) 2025.08.07
파이썬 시퀀스 (2)  (0) 2025.08.05
파이썬 시퀀스 (1)  (0) 2025.08.05
네임드 튜플 (2)  (0) 2025.08.04