본문 바로가기

프로그래머/Python

[널널한 교수의 고급 파이썬] 02-3 집합과 튜플 축약

02-3 집합과 튜플 축약

곱집합

  • 각 집합에서 임의의 원소를 가져와 만들 수 있는 조합을 하나의 튜플로 표현
def product_set(set1, set2):
    res = set()
    for i in set1:
        for j in set2:
            res = res | {(i, j)}
            # res.add((i,j))
    return res

A = {1, 3}
B = {2, 4}
AxB = product_st(A, B)
print(A)
print(B)
print(AxB) 

축약표현으로 구한 곱집합

def product_set(set1, set2):
    return {(i, j) for i in set1 for j in set2}

A = {1, 3}
B = {2, 4}
AxB = product_st(A, B)
print(A)
print(B)
print(AxB) 

주사위를 두 번 던져서 나올 수 있는 모든 경우

def product_set(set1, set2):
    return {(i, j) for i in set1 for j in set2}

cases = {1,2,3,4,5,6}
cases_2times = product_set(cases, cases)
print(cases_2times)

주사위를 두 번 던져 나오는 모든 경우에 대하여 숫자의 합

def product_set(set1, set2):
    return {(i, j) for i in set1 for j in set2}

cases = {1,2,3,4,5,6}
cases_2times = product_set(cases, cases)

sum_set = {sum(tup) for tup in cases_2times}
sum_list = [sum(tup) for tup in cases_2times]

주사위를 세 번 던지는 경우

def tuple_sum(tup):
    if isinstance(tup, int):
        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 = {1,2,3,4,5,6}
cases_2times = product_set(cases, cases)
cases_3times = product_set(cases, cases_2times)

sum_list = [tuple_sum(tup) for tup in cases_3times]