세트의 개념

세트는 우리가 수학에서 배웠던 집합의 개념과 똑같음

세트는 리스트와 다르게 요소는 특정 순서로 저장되지 않으며 위치별로 액세스 할 수 없음

  • 순서 유지의 필요가 없어 속도가 빠름
  • 순서가 없기에 중복 항목은 지원하지 않음

세트 = 집합
데이터간 순서는 존재하지 않음

세트의 생성

세트의 생성
세트_이름 = {항목1, 항목2, 항목3, ...}
numbers = {1,2,3} #초기화된 세트 생성
values = set() #공백 세트 생성​

 

리스트와 문자열을 사용한 세트의 정의

리스트로 세트 정의

numbers =set([1,2,3,1,2,3])
print(numbers)
#출력 결과 : {1,2,3} 중복 데이터는 하나로 전환

문자열로 세트 정의

letters = set("abcab”)

리스트와 세트 간 전환을 활용한 예제

-리스트의 중복되지 않는 항목의 개수는?

list1 =[1,2,3,4,5,1,2,4 ]
print(len(set(list1)))
#출력 결과 : 5 -> 중복 항목은 제외되었기 때문

-두 리스트 간 중복되는 항목은?

list1 =[1,2,3,4,5]
list2 =[3,4,5,6,7]
print(set(list1)&set(list2))
#출력 결과 : {3, 4, 5} 교집합의 결과

세트와 메소드

all(), any(), enumerate(), len(), max(), min, sorted(), sum()등의 메소드 사용 가능

fruits ={"apple","banana","grape"}
size =len(fruits) #size는 3

in 연산자로 항목 검사 가능

fruits = { "apple", "banana", "grape" }
if "apple" in fruits:
	print("집합  안에  apple이  있습니다.")

인덱스는 없지만 for문을 사용하여 각 항목에 접근 가능(순서는 의미 없음)

fruits ={"apple","banana","grape"}
for x in fruits:
	print(x, end=" ")
fruits ={"apple","banana","grape"}
for x in sorted(fruits): #순서 필요시 sorted함수 사용
	print(x, end=" ")

 

세트에 요소 추가하고 삭제하기

세트에 요소 추가하기

  • add() : 단일 항목
  • update() : 여러 항목 추가
fruits ={"apple","banana","grape"}
fruits.add("kiwi")
print(fruits)
#출력 결과 : {'kiwi', 'apple', 'banana', 'grape'}
fruits ={"apple","banana","grape"}
a = {"kiwi","pitch"}
fruits.update(a)
print(fruits)
#출력 결과 : {'banana', 'grape', 'apple', 'pitch', 'kiwi'}

밑의 방법으로 하면 원치 않는 결과가 나옴

fruits ={"apple","banana","grape"}
fruits.update("kiwi","pitch")
print(fruits)
#{'w', 'k', 'i', 'h', 't', 'p', 'grape', 'apple', 'c', 'banana'}

세트에 요소 제거하기

  • remove() : 삭제하는 요소가 없으면 예외 발생
  • discart() : 예외를 발생시키지 않으려면 이 메소드 사용
  • clear() : 모든 요소 삭제
fruits ={"apple","banana","grape","kiwi","pitch"}
fruits.remove("apple")
print(fruits)
#{'banana', 'kiwi', 'pitch', 'grape'}
fruits ={"apple","banana","grape","kiwi","pitch"}
fruits.discard("apple")
print(fruits)
#{'kiwi', 'banana', 'grape', 'pitch'}
fruits ={"apple","banana","grape","kiwi","pitch"}
fruits.clear()
print(fruits)
#출력 결과 : set()

세트의 연산

부분집합 연산 :  < (또는 issubset())

A = {"apple","banana","grape"}
B = {"apple","banana","grape","kiwi"}

if A < B:
	print("A는 B의 부분 집합")

집합간 비교 연산 : ==, !=

A = {"apple","banana","grape"}
B = {"apple","banana","grape","kiwi"}

if A == B:
	print("A와 B는 같습니다")
else : 
	print("A와 B는 같지 않습니다")

합집합, 교집합, 차집합 연산

C = A|B 또는 C = A.union(B)

C = A&B 또는 C = A.intersection(B)

C = A-B 또는 C = A.difference(B)

A ={"apple","banana","grape"}
B ={"orange","banana","grape"}

print(A|B) #합집합
print(A&B) #교집합
print(A-B) #차집합

#출력 결과
#{'grape', 'apple', 'orange', 'banana'}
#{'banana', 'grape'}
#{'apple'}

 

'Python Category > Python' 카테고리의 다른 글

[Python] 문자열  (1) 2022.12.08
[Python] 딕셔너리  (0) 2022.12.07
[Python] 튜플  (0) 2022.12.06
[Python] 리스트(2)  (0) 2022.12.06
[Python] 리스트(1)  (0) 2022.12.06