최근 기술면접을 준비하면서 궁금한것이 생겼었습니다.
그것은 데이터들을 하나로 모으는 컬렉션 자료형이지만 List와 set의 차이점이었습니다.
둘의 차이점은 크게 3가지가 있습니다.
이러한 차이점을 상세하게 알아보겠습니다.
파이썬에서 코딩 테스트나 코드를 작성하였을때 모두들 경험을 해보셨을것입니다.
list와 set에 같은 데이터를 넣었을때 출력을 해보면
list는 순서가 보장이되고, set은 순서의 보장이 되지 않는점이 있었습니다.
그렇다면 set은 왜 순서가 보장이 안되는 것일까요?
그것은 set이 해시 테이블을 기반으로 구현이 되었기 때문입니다.
해시 테이블 : 키와 값이 쌍으로 저장하는 자료구조로, 키에 대한 값을
빠르게 찾을 수 있는 장점이 있습니다.💡 추후에 해시 테이블에 관한 게시물을 작성하겠습니다.
중복이 안되는 것또한 경험을 통해서 해보셨을것입니다.
이것또한 set은 해시테이블의 속성때문에 중복을 허용하지않기 때문입니다.
연산에서도 list와 set이 차이를 보입니다.
이것또한 set은 해시테이블을 기반으로 만들어 졌기 때문에 list는 set보다 다양한 연산을 지원합니다.
위의 차이를 설명하면서 해시테이블때문에 그렇다고 많이 말씀드렸는데 set은 어떻게 구현이 되는것일까요?
def hash(value):
result = 0
for char in value:
result += ord(char)
return result % 100
이것은 제가 임의로 만든 해시함수로 "문어"라는 요소가 들어가게 되면 연산을 통해서 6567이라는 해시 값이 나옵니다.{
65: 문어,
}