안녕하세요 @tmkor입니다. 오늘은 조건제시법과 원소나열법에 대하여 간략히 살펴보려 합니다.
조건제시법과 원소나열법은 집합을 정의하는 2가지 방법입니다.
첫번째, 원소나열법(sets defined by a enumeration)으로 집합의 원소를 주르륵 나열하는 것 입니다.
set1 = {1,2,3,4,5} # 자연수 1부터 5까지 집합
set1 = range(1,6) # 자연수 1부터 <6 까지 집합
set2 = {'Alice', 'Bob', 'Charlie'} # 3개의 문자열 집합
set3 = {set1, set2} # 2개 집합의 집합
두번째, 조건제시법을 정의하기 전에 다음의 용어를 살펴봅시다.
대상영역에서 진리집합을 특정 조건에 의하여 선택하는 방법이 조건제시법입니다. 여기서 조건은 참 혹은 거짓을 가지는 명제입니다. 다시 정의를 내리면
{ x ∈ U | p(x)} => 대상영역 U의 원소 중 p(x)의 값이 true인 원소의 집합Python에서는 조건제시법으로 집합을 초기화 할 수 있습니다. 즉, 대상영역과 조건으로 복잡한 진리 집합을 쉽게 생성할 수 있습니다.
U = {1,2,3,4,5}
evenSet = {x for x in U if x % 2 == 0} # 짝수 집합 { x ∈U | isEven(x) }와 동일
oddSet = {x for x in U if x % 2 == 1} # 홀수 집합 { x ∈U | isOdd(x) }와 동일
다변수에 대한 조건제시법도 가능합니다.
U = {1,2,3,4,5}
V = {100,120,140,160,180}
UxV = {(u,v) for u in U for v in V} # 두 집합의 카르테시안 곱, { u ∈ U, v ∈ V | True(u) ∧ True(v) }와 동일
len(UxV) # 5*5 = 25
위 예제에서는 카르테시안 곱을 1줄의 코드로 표현함을 보실 수 있습니다. 꽤나 많은 경우 훌륭하게 동작하므로 한번 익혀두시면 꽤냐 요긴하게 사용하실 수 있습니다.