파이썬/기본문법

파이썬 Set 자료형 (집합 자료형)

코데방 2024. 2. 15.
728x90

집합 자료형 Set 

 

리스트형 자료구조에서 중복된 값을 제거하거나, 리스트끼리의 값을 비교하려면 복잡한 로직을 짜야합니다. Set 클래스는 이것을 쉽게 처리할 수 있도록 해주는 자료구조 입니다.

 

Set 객체에 값을 넣으면 중복되는 값은 하나만 남고, 순서가 없기 때문에 인덱스라는 개념이 없습니다. 

 

s1 = set("Hello World") # Set 생성
print(s1)

 

 

 

Set 자료형을 리스트나 튜플 형태로 바꿔주면 인덱스를 사용할 수 있습니다. 

하지만 랜덤한 순서로 지정되기 때문에 정렬을 해주지 않으면 어차피 인덱스를 직접적으로 사용하기 어렵습니다. 

정렬이나 index() 함수 등을 통해 찾아서 사용해야합니다.

 

s1 = set("Hello World")  # Set 생성
lst = list(s1)  # 리스트로 변경
tuple = tuple(s1)  # 튜플로 변경

print(lst.index("o"))  # "o"가 있는 인덱스 찾기
print(lst)

lst.remove("o")  # "o" 찾아서 지우기
print(lst)

 

 

 

 

파이썬 Set 관련 함수

 

먼저 Set 자료형에 중복되는 값들을 죄다 집어넣어서 중복을 제거하는데 사용할 수 있습니다.

 

s1 = set("Hello World")  # Set 생성
print(s1)

s1.add(10000) # 하나의 값 추가하기
s1.update(["가", "가", "가", "라"]) # 한 번에 여러 값 추가하기

print(s1)

s1.remove("라") # 해당 값 제거하기
print(s1)

 

 

 

 

 

Set 자료형은 리스트와 같은 집합 자료들 간의 값을 비교하는데 유용합니다.

 

먼저 서로 중복되는 값인 교집합 구하기 입니다. 

 

s1 = set(["가", "나", "다", "라", "마"])
s2 = set(["나", "라", "마", "바", "사"])

# s1과 s2의 교집합 구하기
print(s1 & s2) 
print(s1.intersection(s2))

 

 

 

 

두 집합이 합쳐진 합집합입니다. 리스트와 달리 중복된 값은 하나의 값만 남습니다.

 

s1 = set(["가", "나", "다", "라", "마"])
s2 = set(["나", "라", "마", "바", "사"])

# s1과 s2의 합집합 구하기
print(s1 | s2)
print(s1.union(s2))

 

 

 

상대방이 가지고 있는 자료를 내쪽에서 지워버리는 차집합 만들기 입니다. 

 

s1 = set(["가", "나", "다", "라", "마"])
s2 = set(["나", "라", "마", "바", "사"])

# s1 중에서 s2에 있는 값 빼기 (차집합)
print(s1 - s2)
print(s1.difference(s2))

 

 

728x90

댓글

💲 추천 글