728x90
반응형
* 본 포스팅은 주피터 노트북에서 실행했다.
def product_set(set1,set2):
res=set()
for i in set1:
for j in set2:
res = res | {(i,j)}
return res
A = {1,3}
B = {2,4}
AxB = product_set(A,B)
print('A= ',A)
print('B= ',B)
print('AxB= ',AxB)
SQL의 Cross Join과 동일하다. 데카르트의 곱
곱집합 함수를 이용한 집합의 세제곱 연산
def product_set(set1,set2):
res=set()
for i in set1:
for j in set2:
res = res | {(i,j)}
return res
def exp(input_set, exponent):
res=input_set
for _ in range(exponent-1):
res=product_set(res,input_set) #호출한 결과를 res에 누적하여 반환함
return res
A = {1,3}
A3 = exp(A,3) #집합 A에 대하셔 거듭 제곱을 3회 수행함
print(A3)
이를 참고하여 주사위를 두번 던졌을 때 가지수를 구해보자
cases={1,2,3,4,5,6}
cases_2times = product_set(cases, cases)
cases_2times #주사위 두번던졌을 때 가지수
#주사위 2번 던졌을 때 set이라 36이 안나오고 11가지 밖에 없음
sum_set ={sum(tup) for tup in cases_2times}
sum_set
위 코드를 list로 변환해 보았다.
sum_set =[sum(tup) for tup in cases_2times]
len(sum_set)
주사위 3번 던졌을 때 경우의 수 구하기
def tuple_sum(tup):
if isinstance(tup, int): #tup가 정수(int) 형이면 tup을 반환
return tup
else:
accum=0
for element in tup:
accum += tuple_sum(element) #재귀적 호출, 자기 자신 호출
return accum
def product_set(set1,set2):
res=set()
for i in set1:
for j in set2:
res = res | {(i,j)}
return res
cases_3times = product_set(cases, cases_2times)
sums={tuple_sum(tup) for tup in cases_3times}
sums
728x90
반응형
'Language > Python' 카테고리의 다른 글
[Python/파이썬] datetime 모듈로 날짜/시간 다루기(바꾸기, 남은시간) (0) | 2021.06.02 |
---|---|
[Python/파이썬] zip함수를 이용한 집적화/ zip으로 묶여진 튜플들을 풀어내기 (0) | 2021.06.02 |
[Python/파이썬] set 자료형 - 교집합, 합집합, 차집합 (0) | 2021.06.02 |
[Python/파이썬] 리스트, 튜플, 문자열로부터 집합만들기 / set이용 (0) | 2021.06.02 |
[Python/파이썬] 튜플(tuple)에 대한 예제 (0) | 2021.06.02 |