본문 바로가기
개발일지/Python

파이썬 합집합, 교집합 코드 (중복제거)

by 개발에정착하고싶다 2022. 5. 12.
320x100
tuple1 = (1,3,2,6,12,5,7,8)
tuple2 = (0,5,2,9,8,6,17,3)

new_tuple = tuple1 + tuple2
print(new_tuple)

# set을 해줌으로 인해서 자동 내림차순 정렬에 중복제거 효과가 있는것 같다.
new_tuple = set(new_tuple)
print(new_tuple)

# 합집합 (중복x)
new_tuple = tuple(new_tuple)
print(new_tuple)

common_number =[]
# 교집합
for i in tuple1:
    for a in tuple2:
        if i == a:
            common_number.append(a)

common_number = set(common_number)
common_number = tuple(common_number)
print(common_number)

 

더 깔끔한 버전으로는

 

tuple1 = (1,3,2,6,12,5,7,8)
tuple2 = (0,5,2,9,8,6,17,3)

tempHap = list(tuple1)
tempGyo = list()

for n in tuple2:
    if n not in tempHap:
        tempHap.append(n)
    else:
        tempGyo.append(n)

tempHap = tuple(sorted(tempHap))
tempGyo = tuple(sorted(tempGyo))

print(f'합집합(중복없이)\t:{tempHap}')
print(f'교집합\t:{tempGyo}')

가 있다.

 

다른 반복문 버전으로는

 

 

tuple1 = (1,3,2,6,12,5,7,8)
tuple2 = (0,5,2,9,8,6,17,3)

tempHap = tuple1 + tuple2
tempGyo = list()
tempHap = list(tempHap)

print(f'tempHap: {tempHap}')
print(f'tempGyo: {tempGyo}')

idx = 0
while True:

    if idx >= len(tempHap):
        break

    if tempHap.count(tempHap[idx]) >= 2:
        tempGyo.append(tempHap[idx])
        tempHap.remove(tempHap[idx])
        continue

    idx += 1

print(f'tempHap: {tempHap}')
print(f'tempGyo: {tempGyo}')
300x250