2024. 7. 10. 22:47ㆍ3층 1구역 - 개발의 장/Python 프로그래밍 핵심 개념
1. 서론
이 프로그램을 실행하면 어떤 결과가 나올까?
x = 5
y = x
y = 3
print(x)
print(y)
먼저,
x변수에 5가 저장된다.
y변수에 x변수 값이 저장되므로 5가 저장된다.
y변수에 3이 저장된다. 기존에 저장되어 있던 5는 사라진다.
결과는
5
3
이 나올 것이다.
2. 본론
서론의 과정을 리스트에 적용해보자.
x = [2, 3, 5, 7, 11]
y = x
y[2] = 4
print(x)
print(y)
먼저,
x에 위와 같은 리스트가 저장된다.
y에 x의 리스트가 저장된다.
y 리스트의 2번 인덱스를 4로 바꾼다. [2, 3, 4, 7, 11]
그러면 결과로
[2, 3, 5, 7, 11]
[2, 3, 4, 7, 11]
가 나올 것이다.
예상과는 다르게 x, y 리스트가 동일한 결과가 출력되었다. 왜 그럴까?
2-1. 왜 그럴까?
파이썬에서 어떠한 변수에 값을 지정하면 그 값에 이름표를 부여하는 것이라고 생각할 수 있다.
정수 5를 변수 x에 지정해 주었다.
그러면 위와 같이 정수 5에 x라는 이름표를 달아준 것이다.
그리고 x를 y에 지정해주면 같은 정수 5에 y라는 이름표를 달아주게 된다.
정수 3을 변수 y에 지정하게 되면 정수 3이 y라는 이름표를 달게 된다.
이런 과정을 리스트에 적용해보자.
마찬가지로 [2, 3, 5, 7, 11] 라는 리스트에 x라는 이름표를 달아준다.
x = [2, 3, 5, 7, 11]
그리고 같은 리스트에 y라는 이름표를 달아준다.
y = x
그리고 y에 2번째 인덱스의 요소를 4로 바꿔준다.
y[2] = 4
근데 이 리스트를 보면 x라는 이름표도 갖고 있고,
y라는 이름표도 갖고 있다.
그렇기 때문에
print(x)
print(y)
를 하게 되면 같은 리스트를 출력하게 된다.
여기서 y는 x의 가명 또는 alias라고 할 수 있다.
그러면 x와 y가 다른 리스트를 출력하려면 어떻게 해야 할까??
x = [2, 3, 5, 7, 11] # [2, 3, 5, 7, 11] < 이 리스트에 x 이름표가 달린다.
y = list(x) # 여기서 리스트 x가 그대로 복사되어 새로운 리스트에 y 이름표가 달린다.(이 경우에는 y는 x의 가명이 아니다)
y[2] = 4 # 여기서 y리스트의 2의 인덱스 요소만 4로 바뀌게 된다.
print(x)
print(y)
결과
3. 결론
'3층 1구역 - 개발의 장 > Python 프로그래밍 핵심 개념' 카테고리의 다른 글
32. 파이썬 - module (0) | 2024.07.10 |
---|---|
31. 파이썬 - list and string (0) | 2024.07.10 |
29. 파이썬 - dictionary 응용 (0) | 2024.07.10 |
28. 파이썬 - dictionary (0) | 2024.07.10 |
27. 파이썬 - range (0) | 2024.07.08 |