가명(alias)
x = 5
y = x
y = 3
print(x)
print(y)
# 5
# 3 출력
x = [2, 3, 5, 7, 11]
y = x
x[2] = 4
print(x)
print(y)
# y 가 x 값을 받아 [2, 3, 5, 7, 11]이 되고
# 2번째 값을 4로 대입했기때문에 [2, 3, 4, 7, 11]
# print(x)는 [2, 3, 5, 7, 11]
# print(y)는 [2, 3, 4, 7, 11] 예상.
# 출력
# [2, 3, 4, 7, 11]
# [2, 3, 4, 7, 11]
# 틀렸다.
# 파이썬에서 변수에 값을 주면 이름표를 달아주는 것이다
# 한 이름표는 한 곳에만 달린다.
# x와 y가 한 값에 일름표를 달았는데 값이 변했기 때문에 x, y가 같이 바뀐 것
x = [2, 3, 5, 7, 11]
y = list(x)
y[2] = 4
print(x)
print(y)
# 출력
# [2, 3, 5, 7, 11]
# [2, 3, 4, 7, 11]
퀴즈
다음 코드를 실행했을 때 출력되는 내용을 고르세요.
x = [2, 3, 5, 7, 9]
y = x
y[2] = 11
x[4] = 13
print(y)
1
[2, 3, 11, 7, 9]
2
[2, 11, 5, 7, 9]
3
[2, 3, 11, 7, 13]
4
[2, 3, 5, 7, 13]
5
[2, 3, 5, 7, 9]
퀴즈 해설
1번 줄에서 리스트 [2, 3, 5, 7, 9]를 변수 x에 지정합니다. 즉, 변수 x가 리스트 [2, 3, 5, 7, 9]를 가리키게 됩니다.
2번 줄에서 변수 x를 변수 y에 지정합니다. 즉, 변수 y는 변수 x가 가리키는 곳을 함께 가리키게 됩니다. 변수 y는 변수 x의 가명(alias)라고 할 수 있습니다.
4번 줄에서 y가 가리키는 리스트의 2번 인덱스 값을 11로 수정합니다. 이제 변수 y가 가리키는 리스트는 [2, 3, 11, 7, 9]가 되는데요. x도 같은 리스트를 가리키기 때문에, 변수 x가 가리키는 리스트도 [2, 3, 11, 7, 9]가 됩니다.
5번 줄에서 x가 가리키는 리스트의 4번 인덱스 값을 13으로 수정합니다. 이제 변수 x가 가리키는 리스트는 [2, 3, 11, 7, 13]이 되는데요. y도 같은 리스트를 가리키기 때문에, 변수 y가 가리키는 리스트도 [2, 3, 11, 7, 13]이 됩니다.
결국 7번 줄에서 변수 y를 출력하면 [2, 3, 11, 7, 13]이 출력됩니다.
다음 코드를 실행했을 때 출력되는 내용을 고르세요.
x = ["이가훈", "김민주", "최고은", "우설희", "최규호"]
y = list(x)
y[0] = "강귀윤"
x[1] = "김원일"
print(x)
1
["강귀윤", "김원일", "최고은", "우설희", "최규호"]
2
["이가훈", "김원일", "최고은", "우설희", "최규호"]
3
["강귀윤", "김민주", "최고은", "우설희", "최규호"]
4
["이가훈", "김민주", "최고은", "우설희", "최규호"]
5
["김원일", "강귀윤", "최고은", "우설희", "최규호"]
퀴즈 해설
1번 줄에서 리스트 ["이가훈", "김민주", "최고은", "우설희", "최규호"]를 변수 x에 지정합니다. 즉, 변수 x가 리스트 ["이가훈", "김민주", "최고은", "우설희", "최규호"]를 가리키게 됩니다.
2번 줄에서 x가 가리키는 리스트에 대한 복사본을 만듭니다. 그리고 y는 그 복사본을 가리키게 됩니다.
4번 줄에서 y가 가리키는 리스트의 0번 인덱스 값을 "강귀윤"으로 수정합니다. 이제 변수 y가 가리키는 리스트는 ["강귀윤", "김민주", "최고은", "우설희", "최규호"]가 됩니다. 참고로 x와 y는 다른 리스트를 가리키기 때문에, 4번 줄이 x에는 아무런 영향을 끼치지 않습니다.
5번 줄에서 x가 가리키는 리스트의 1번 인덱스 값을 "김원일"로 수정합니다. 이제 변수 x가 가리키는 리스트는 ["이가훈", "김원일", "최고은", "우설희", "최규호"]가 됩니다. x와 y는 다른 리스트를 가리키기 때문에, 5번 줄이 y에는 아무런 영향을 끼치지 않습니다.
7번 줄에서 x를 출력하면, x가 가리키는 리스트인 ["이가훈", "김원일", "최고은", "우설희", "최규호"]가 출력됩니다.
다음 코드를 실행했을 때 출력되는 내용을 고르세요.
x = ["이가훈", "김민주", "최고은", "우설희", "최규호"]
y = list(x)
z = x
y[0] = "강귀윤"
x[1] = "김원일"
z[2] = "성재훈"
print(x)
1
["강귀윤", "김원일", "성재훈", "우설희", "최규호"]
2
["이가훈", "김원일", "최고은", "우설희", "최규호"]
3
["강귀윤", "김민주", "최고은", "우설희", "최규호"]
4
["이가훈", "김원일", "성재훈", "우설희", "최규호"]
5
["김원일", "강귀윤", "성재훈", "우설희", "최규호"]
퀴즈 해설
1번 줄에서 리스트 ["이가훈", "김민주", "최고은", "우설희", "최규호"]를 변수 x에 지정합니다. 즉, 변수 x가 리스트 ["이가훈", "김민주", "최고은", "우설희", "최규호"]를 가리키게 됩니다.
2번 줄에서 x가 가리키는 리스트에 대한 복사본을 만듭니다. 그리고 y는 그 복사본을 가리키게 됩니다.
3번 줄에서 변수 x를 변수 z에 지정합니다. 즉, 변수 z는 변수 x가 가리키는 곳을 함께 가리키게 됩니다. 변수 z는 변수 x의 가명(alias)라고 할 수 있습니다.
1~3번 줄을 정리하면 이렇습니다.
x와 z는 같은 리스트를 가리킨다.
y는 x가 가리키는 리스트의 복사본을 가리킨다. 즉, y와 x는 다른 리스트를 가리킨다.
그렇다면 5~7번 줄 중 5번 줄은 x에 아무런 영향을 끼치지 않습니다. 6, 7번 줄만 보면 되겠죠?
6번 줄에서는 1번 인덱스의 값을 "김원일"로 수정했고, 7번 줄에서는 2번 인덱스의 값을 "성재훈"으로 수정했습니다. 고로 9번 줄에서 x를 출력하면, x가 가리키는 리스트인 ["이가훈", "김원일", "성재훈", "우설희", "최규호"]가 출력됩니다.
'교육 > [Codeit] 프로그래밍 기초 in Python' 카테고리의 다른 글
리스트와 문자열 정리 (0) | 2020.12.01 |
---|---|
리스트와 문자열 (0) | 2020.12.01 |
실습과제 투표 집계하기 (0) | 2020.11.27 |
실습과제 사전 뒤집기 (0) | 2020.11.27 |
사전 활용법 (0) | 2020.11.27 |