Python_Set

Jina·2020년 3월 26일
0

Today I Learned

목록 보기
4/21

Set

집합

set 생성

중괄호 { } 사용

set_name = {elements}

위와 같이 중괄호 안에 요소를 입력하여 생성

예시 )

set1 = {1,2,3}
set2 = {123}
set3 = {'air'}

print(set1)
  # {1,2,3}
  
print(set2)
  # {123}
  
print(set3)
  # {'air'}

set ( ) 함수 사용

괄호 안에 요소들을 입력하여 set을 만들 수 있음

  • set함수 안에 iterable이 들어와야함
    • iterable의 예 : list, str, tuple

set_name = set(iterable)

  • set함수 안에 str을 이용하여 set을 만든 경우와, 중괄호에 str을 입력하여 set을 만든 경우에 다른 결과가 도출됨

아래의 예시 참고

set_1 = set([1,2,3])
set_2 = set(123)
set_3 = set('air')

print(set_1)
  # {1,2,3} 
  # iterable인 list가 들어와서 set 함수 적용 가능
  
print(set_2)
  # TypeError: 'int' object is not iterable
  # 숫자 데이터는 iterable이 아니므로 set 함수안에 들어갈 수 없음
  
print(set_3)
  # {'i','a',r'}
  # str은 iterable
  # 중괄호를 사용해서 set을 만들었을 때와 다른 결과가 나옴

set 특징

  • 여러가지 요소들을 저장 할 수 있음
  • 요소들이 순서대로 저장되지 않음
    • for문으로 set을 가져올 때 요소가 무작위 순서로 나옴
    • indexing,slicing 등 없음

예시)

a = set('abcde')
b = {'a','b','c','d','e'}
d = set([1,2,3,4])

print(a)
# {'d', 'c', 'b', 'e', 'a'}
# 순서대로 저장되지 않음

print(b)
# {'d', 'a', 'c', 'b', 'e'}
# 순서대로 저장되지 않음

for c in b :
    print (c)
   
 # d
 # a
 # c
 # b
 # e
 # for문으로 set을 가져올 때 요소 무작위 순서로 나옴
 
 print(d[0])
 # TypeError: 'set' object does not support indexing
 # indexing 없음
  • 중복된 값을 저장할 수 없음

예시)

set_a = {123,123}
set_b = set([123,123])
set_c = set('apple')


print(set_a)
# {123}

print(set_b)
# {123}

print(set_c)
# {'e', 'l', 'p', 'a'}
  • 중복값이 없으므로 만약 새로 저장하려고 하는 요소와 동일한 값의 요소가 존재하면, 새로운 요소가 이 전의 요소를 replace

set 요소 추가

add 메서드 이용

append는 사용 불가
아래의 예시와 같이 사용 - 한개의 값만 추가 가능

a= {1,2,3,4}

a.add(5)
print(a)
# {1, 2, 3, 4, 5}

a.add("100")
print(a)
# {1, 2, 3, 4, 5, '100'}

a.append(10)
# AttributeError: 'set' object has no attribute 'append'
# append는 사용 불가능

update 메서드 이용

여러개의 값을 한번에 추가 가능
.update(iterable)

e= {1,2,3,4}

e.update([100,150])
print(e)
# {1, 2, 3, 100, 4, 150}

주의

update에서는 괄호 안에 입력할 수 있는 종류가 다르기 때문에 주의 필요
또한 괄호안에 같은 str이 들어가도 결과가 다음

아래의 예시를 보며 확인가능

e= {1,2,3,4}

e.update(1)
# TypeError: 'int' object is not iterable

e.add([10])
# TypeError: unhashable type: 'list'

e.update('air')
print(e)
# {1, 2, 3, 4, 'i', 'a', 'r'}

e.add('air')
print(e)
# {1, 2, 3, 4, 'air'}

set 요소 삭제

remove 메서드 이용

a= {1,2,3,4}

a.remove(3)
print(a)
# {1, 2, 4}

Look up

set에 어떠한 값이 포함되어 있는지 아닌지 찾아보는 것

in 키워드 사용

아래의 예시와 같이 사용
포함되어 있으면 True/ 포함되어 있지 않으면 False

num = {1,5,3,2,6,7,9,10}

a = 5 in num
print (a)
# True

b = 8 in num
print(b)
# False

교집합

& 기호 사용

아래의 예시 참고

num = {1,2,3,4,5}
num2 = {4,5,6,7,8,9}

a = num&num2

print(a)
# {4,5}

intersection 메서드 사용

set1.intersection(set2)


num = {1,2,3,4,5}
num2 = {4,5,6,7,8,9}

a = num.intersection(num2)

print(a)
# {4,5}

합집합

| 기호 사용

중복값 제거됨
아래의 예시 참고

num = {1,2,3,4,5}
num2 = {4,5,6,7,8,9}

a = num|num2

print(a)
# {1, 2, 3, 4, 5, 6, 7, 8, 9}

union 메서드 사용

set1.union(set2)
중복값 제거됨

num = {1,2,3,4,5}
num2 = {4,5,6,7,8,9}

a = num.union(num2)

print(a)
# {1, 2, 3, 4, 5, 6, 7, 8, 9}

차집합

차집합은 - 를 이용하여 구할 수 있음

num = {1,2,3,4,5}
num2 = {4,5,6,7,8,9}

a = num-num2
b = num2-num

print(a)
# {1, 2, 3}

print(b)
# {8, 9, 6, 7}

0개의 댓글