리스트 4번째 내용.
오늘은 리스트의 복사와 에일리어싱에 대해 알아보도록 하자.
1. 에일리어싱 (Aliasing)
알리아싱, 앨리어싱 등 다양하게 사람들이 부른다.
alias, 영단어로 가명 이라는 뜻이다.
즉 aliasing 이란 데이터에 별칭을 붙이는 것이라 생각하면 좋다.
말로 설명하기엔 살짝 어려운 것 같으므로 코드를 살짝 보자.
# 변수의 경우
x = 10
y = x
y = 5
print(x)
print(y)
변수의 경우에는 x와 y를 위와 같이 선언한 후, y 에 새로운 값을 대입하면 두 변수가 서로 다른 값을 갖게 됨을 알 수 있다.
# 리스트의 경우
x = [2, 3, 5, 7, 11]
y = x
y[2] = 4
print(x)
print(y)
리스트의 경우, x, y 를 위와같이 선언 한 후 y의 임의의 인덱스에 값을 대입하면 x, y 모두 변경됨을 알 수 있다.
이 경우에는 두 변수가 서로 다른 이름을 갖고 있지만,
실제로 컴퓨터의 메모리에 같은 주소값을 가리키고 있기 때문에(참조 라고 한다!),
동일한 리스트가 출력되는 것이다. 이때 y를 x의 alias(가명) 이라고 할 수 있다.
살짝 어려운 것 같다.
2. 리스트 복사
1번의 내용과 같은 일을 만들고 싶지 않은 경우가 대다수이다.
리스트를 복사하여 원본은 건들이지 않고, 복사한 리스트만 수정하여 새로운 데이터를 만들고 싶을 때 어떻게 해야 할까?
이런 문제점을 해결하기위해 리스트복사 라는 개념이 있다.
사용법은 아래와 같다.
단순히 = 연산자가 아닌 list() 를 사용하면 리스트가 복사가된다.
x = [리스트]
y = list(x)
1번의 예시에 list()를 추가해 보도록 하자.
x = [2, 3, 5, 7, 11]
y = list(x)
y[2] = 4
print(x)
print(y)
원하는대로 결과가 나왔다.
alias의 개념이 살짝 어려운 것 같다.
멍선생도 적으면서 무슨 말인가 싶긴 하지만, 오늘은 딱 한가지만 기억하면 될 것 같다.
리스트는 [ = ] 를 사용하면 주소값을 참조하기 때문에 동일한 리스트가 되는 것이고,
리스트를 복사하려면 [ = list() ] 를 사용해야 한다.
'5분 공부' 카테고리의 다른 글
[5분 공부] Python 문자열 - 2 (0) | 2022.12.08 |
---|---|
[5분 공부] 반복문 - 2 (for, range) (0) | 2022.11.18 |
[5분 공부] python 리스트 (list) - 3 (0) | 2022.11.10 |
[5분 공부] python 리스트 (list) - 2 (0) | 2022.11.05 |
[5분 공부] python 리스트 (list) - 1 (1) | 2022.10.31 |
댓글