세트의 개념
세트는 우리가 수학에서 배웠던 집합의 개념과 똑같음
세트는 리스트와 다르게 요소는 특정 순서로 저장되지 않으며 위치별로 액세스 할 수 없음
- 순서 유지의 필요가 없어 속도가 빠름
- 순서가 없기에 중복 항목은 지원하지 않음
세트의 생성
세트의 생성
세트_이름 = {항목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 |