풀어서 쓰면 이렇게 쓰게 되지만,
if unique > given:
answer = given
else:
answer = unique
한 줄로 간결하게 표현하면 이렇게 쓰게 된다.
answer = given if unique > given if something > unique
이 경우는 최솟값을 구하는 것이므로 더 간결하게는...
answer = min(given, unique)
풀어서 쓰면 이렇게 쓰게 되지만,
if unique > something:
answer = something
elif something > given:
answer = given
else:
answer = unique
한 줄로 간결하게 표현하면 이렇게 쓰게 된다.
answer = something if unique > something if something > given else unique
이 경우는 최솟값을 구하는 것이므로 더 간결하게는...
answer = min(given, something, unique)
set은 집합을 나타낸다
a = set([1, 1, 2, 2])
print(a)
# {1, 2}
이렇게도 정의할 수 있다
a = {1, 1, 2, 2}
print(a)
# {1, 2}
교집합
a = {1, 2, 2}
b = {2, 3, 4}
print(a.intersection(b))
# {2}
print(a&b)
# {2}
합집합
a = {1, 2, 2}
b = {2, 3, 4}
print(a.union(b))
# {1, 2, 3, 4}
print(a|b)
# {1, 2, 3, 4}
차집합
a = {1, 2, 2}
b = {2, 3, 4}
print(a.difference(b))
# {1}
print(a-b)
# {1}
같은 집합인지
a = {1, 2, 2}
b = {2, 3, 4}
c = {1, 2}
print(a==b)
# False
pritn(a==c)
# True
원소가 하나도 겹치지 않는 집합인지
a = {1, 2, 2}
b = {2, 3, 4}
c = {3, 4, 5}
print(a.isdisjoint(b))
# False
print(a.isdisjoint(c))
# True
부분 집합
a = {1, 2, 2}
b = {2, 3, 4}
c = {1}
print(b.issubset(a))
# False
print(c.issubset(a))
# True
add: 원소 하나 추가
a = {1, 2}
print(a.add(3))
# None
a.add(3)
print(a)
# {1, 2, 3}
b = a.add(3)
print(b)
# {1, 2, 3}
update: 집합 단위로 추가
a = {1, 2}
print(a.update({3, 4}))
# None
a.update({3, 4})
print(a)
# {1, 2, 3, 4}
b = a.update({3, 4})
print(b)
# {1, 2, 3, 4}
discard
a = {1, 2}
a.remove({2})
print(a.update({3, 4}))
# None
a.remove({2})
print(a)
# {1}
b = a.remove(2)
print(b)
# {1}
다만 내부에 삭제하려는 값이 없으면 오류!
remove
a = {1, 2}
a.discard(2)
print(a.discard({3, 4}))
# None
a.discard(2)
print(a)
# {1}
b = a.discard(2)
print(b)
# {1}
*다만 내부에 삭제하려는 값이 없어도 오류가 나지 않고, 아무 일도 일어나지 않음!*
pop
a = {1, 2}
print(a.pop())
# 1
print(a)
# {2}
pop의 특징은 삭제하는 원소를 반환한다는 점.
다만 내부에 삭제하려는 값이 없으면 오류!
clear
a = {1, 2}
a.clear()
print(a)
# set()
+참고)
리스트/튜플 -> set -> 리스트/튜플
중복은 제거되나 순서는 보장할 수 없음.
remove
: 원소를 지정해서 삭제
: 두 개 이상 있을 경우 가장 앞의 값 하나만 삭제
a = [1, 2, 3, 4]
a.remove(2)
print(a)
# [1, 3, 4]
del
: 인덱스를 지정해서 삭제
a = [1, 2, 3, 4]
del (2)
print(a)
# [1, 3, 4]
pop
: 지정한 위치의 값을 취득한 후 삭제
: 지정한 값이 없을 경우 마지막 값 (첫번째 아님!)
a = [1, 2, 3, 4]
print(a.pop(2))
# 3
print(a)
# [1, 2, 4]
다만 내부에 삭제하려는 인덱스가 없으면 오류!
clear
: 전체 삭제
a = [1, 2, 3, 4]
a.clear()
print(a)
# []
del > remove, pop > slicing
slicing과 del은 거의 두배 가까이 차이난다.