반응형
파이썬에서 is 연산자는 두 변수가 같은 객체를 가리키고 있는지 확인할 때 is 구문을 사용한다.
그렇다면 is 연산자와 같음을 나타내는 == 연산자의 차이점은 무엇일까?
아래 코드를 통해 이해해보자.
# 3개의 리스트 생성
list1 = [1, 2, 3] # 리스트 할당
list2 = list1 # 리스트1을 대입 받는 방식으로 리스트2 생성
list3 = list1.copy() # 리스트1의 사본을 리스트3의 값으로 할당
print('list1 과 list2는 같은 객체를 가리키고 있나요? : ', list1 is list2)
print('list1 과 list3은 같은 객체를 가리키고 있나요? : ', list1 is list3)
print('list2 와 list3은 같은 객체를 가리키고 있나요? : ', list2 is list3)
# --- 출력물 ----
# list1 과 list2는 같은 객체를 가리키고 있나요? : True
# list1 과 list3은 같은 객체를 가리키고 있나요? : False
# list2 와 list3은 같은 객체를 가리키고 있나요? : False
세 리스트 모두 동일한 요소인 1, 2, 3을 갖고 있지만, list1과 list2만 같은 객체를 가리키고 있다.
왜냐하면 list2는 list1을 단순 대입받았기때문에 같은 객체를 가리키고 있다.
두 리스트가 가리키는 대상이 같아 is연산자가 True를 리턴했다.
반면에 list3은 copy 메서드로 list1의 사본을 뜬 것이어서 메모리가 완전히 분리된 다른 객체이다.
하지만 세 리스트 모두 같은 요소를 갖고 있다.
print('list1 과 list2는 같은 값의 요소로 이루어져 있나요?: ', list1 == list2)
print('list1 과 list3는 같은 값의 요소로 이루어져 있나요?: ', list1 == list3)
print('list2 과 list3는 같은 값의 요소로 이루어져 있나요?: ', list2 == list3)
# --- 출력물 ---
# list1 과 list2는 같은 값의 요소로 이루어져 있나요?: True
# list1 과 list3는 같은 값의 요소로 이루어져 있나요?: True
# list2 과 list3는 같은 값의 요소로 이루어져 있나요?: True
반응형
'파이썬 > 파이썬 기초' 카테고리의 다른 글
[python] 반복자(iterator)와 제너레이터(generator) (0) | 2023.04.05 |
---|---|
[python] finally 블록 - 파이썬의 자원정리 방법 (0) | 2023.03.05 |
[python] 키워드 가변 인수 (keyword variable arguments) (0) | 2023.03.05 |
[python] 함수 - 가변 인수 (0) | 2023.03.05 |