본문 바로가기
  • Top Genius in the world
알고리듬

[알고리듬] #32 셑 메소드

by Mr.Algo 2024. 4. 4.
728x90
반응형

파이썬 실습창을 열 수 있습니다.실습창 열기

쨍! 하고 해뜰 날

 

1. 셑 메소드

set(집합)은 중복되지 않은 item들의 순서 없는 모임입니다. set과 frozenset의 두 종류가 있습니다.

set은 변경이 가능한 집합이고 (mutable) , frozenset은 변경이 불가능한 집합입니다(immutable).

 

set object와 관련된 연산과 메소드입니다.

example을 실습하세요.

no item form example output
1 a=s | t
b=s & t
c=s - t
d=s ^ t
s={1, 3, 5, 7}
t={2, 3, 7}
a=s | t
b=s & t
c=s - t
d=s ^ t
print(a,b,c,d)
{1, 2, 3, 5, 7}
{3, 7}
{1, 5}
{1, 2, 5}

합집합
교집합
차집합
대칭 차집합
(한쪽에만 있는 항목)

2 len(s)
max(s)
min(s)
s={1, 3, 5, 7}
a=len(s)
b=max(s)
c=min(s)
print(a)
print(b)
print(c)
4
7
1

s의 항목 개수를 반환
s의 최대값 항목을 반환
s의 최소값 항목을 반환
3 s.copy()
s={1, 3, 5, 7}
t=s.copy()
print(s)
print(t)
{1, 3, 5, 7}
{1, 3, 5, 7}

s의 복사본을 만든다.
4 s.union(t)
s.intersection(t)
s.difference(t)
s.symmetric_difference(t)

s={1, 3, 5, 7}

t={2, 3, 7}
a=s.union(t)
b=s.intersection(t)
c=s.difference(t)
d=s.symmetric_difference(t)
print(a)
print(b)
print(c)
print(d)
{1, 2, 3, 5, 7}
{3, 7}
{1, 5}
{1, 2, 5}

합집합(|와 같다)
교집합(&와 같다)
차집합(-와 같다)
대칭 차집합(^와 같다)
5 s.issubset(t)
s.issuperset(t)
s={1, 3, 5, 7}
t={3, 7}
a=s.issuperset(t)
print(a)
True

st의 부분집합인 경우 True
st의 포함집합인 경우 True
6 s.add(item)
s={1, 3, 5, 7}

t={3, 7}
s.add(9)
print(s)
{1, 9, 3, 5, 7}

sitem을 추가한다.
같은 item이 있으면 효과가 없다.
item 순서가 바뀔 수 있다.
7 s.discard(item) s={1, 3, 5, 7}
t={3, 7}
s.discard(5)
print(s)
{1, 3, 7}

s에서 item을 제거한다.
item 없으면 효과 없다.
8 s.remove(item)
s={1, 3, 5, 7}

t={3, 7}
s.remove(9)
print(s)
KeyError: 9

s에서 item을 제거한다.
item 없으면 KeyError 발생된다.
9 s.clear()
s={1, 3, 5, 7}

t={2, 3, 5, 7, 9}
s.clear()
print(s)
set()

s에서 모든 항목을 제거한다.
공집합이 된다.
10 s.update(t)
s={1, 3}

t={2, 3, 5}
s.update(t)
print(s)
{1, 2, 3, 5}

st의 모든 항목을 추가한다.
11 s.difference_update(t)
s={1, 3, 5, 7}

t={2, 3, 5, 7, 9}
s.difference_update(t)
print(s)
{1}

s에서 t에 있는
모든 항목을 제거한다.
 

 

⦁ a는 b의 포함집합(supper set), b는 a의 부분 집합(sub set)입니다.

6번부터 11번까지는 set(변경 가능한 집합)에서 사용할 수 있습니다.

mutable object(변경 가능한 객체)는 실행 중 내용을 바꿀 수 있는 str, list, dict, set 등이고,

  immutable object(변경 불가능한 객체)int, float, complex, str, tuple, frozenset 등입니다.

 

2. 단골 고객

다음은 어제와 오늘 우리 가게를 방문한 고객 이름입니다.

 

어제: alice, bob, tony, suzy

오늘: bob, minsu, tony, suzy, jin

 

어제와 오늘 이틀 연속하여 우리 가게를 방문한 고객이 누구인지 알고 싶습니다.

 해결하여 보세요.

더보기
yesterday = 'alice bob tony suzy'
today = 'bob minsu tony suzy jin'
yset = set(yesterday.split())
tset = set(today.split())
customer = yset & tset        # 교집합을 구한다.
print(customer)              

'''
{'tony', 'bob', 'suzy'} 순서는 바뀔 수 있습니다.
'''

수고하셨습니다.

오늘 끝.

728x90
반응형