Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

공통 요소를 기준으로 리스트를 집합으로 병합하는 Python 프로그램


특정 공통 요소를 기준으로 리스트를 집합(set)으로 변환해야 할 때가 있습니다. 이럴 때는 'enumerate'를 사용해 집합을 순회하면서 각 요소에 조건을 적용하는 메서드를 정의하면 됩니다. 여기에 'union' 메서드와 'map' 메서드를 함께 활용합니다.

예제 코드

아래는 공통 요소를 기준으로 리스트를 집합으로 변환하는 과정을 보여주는 예제입니다.

def common_elem_set(my_set):
    for index, val in enumerate(my_set):
        for j, k in enumerate(my_set[index + 1:], index + 1):

            if val & k:
                my_set[index] = val.union(my_set.pop(j))
                return common_elem_set(my_set)
    return my_set

my_list = [[18, 14, 12, 19], [9, 6, 2, 1], [54, 32, 21, 17], [18, 11, 13, 12]]

print("The list is :")
print(my_list)

my_set = list(map(set, my_list))

my_result = common_elem_set(my_set)

print("The result is :")
print(my_result)

출력 결과

The list is :
[[18, 14, 12, 19], [9, 6, 2, 1], [54, 32, 21, 17], [18, 11, 13, 12]]
The result is :
[{11, 12, 13, 14, 18, 19}, {9, 2, 6, 1}, {32, 17, 21, 54}]

코드 설명

  • 'common_elem_set'이라는 이름의 메서드를 정의하고, 리스트를 매개변수로 전달받습니다.

  • 'enumerate'를 사용해 리스트의 각 요소를 인덱스와 함께 순회합니다.

  • '&' 연산자를 사용해 두 집합 사이에 공통 요소가 있는지 검사하는 조건을 설정하고, 조건이 충족되면 'union' 메서드로 해당 집합들을 하나로 병합합니다.

  • 병합이 일어나면 자기 자신을 재귀적으로 호출하여, 더 이상 합칠 수 있는 집합이 없을 때까지 같은 과정을 반복합니다.

  • 메서드 외부에서는 리스트 안에 리스트가 포함된 중첩 리스트를 정의합니다.

  • 이 중첩 리스트를 콘솔에 출력합니다.

  • 'map' 메서드를 사용해 각 내부 리스트를 집합으로 변환한 뒤, 다시 리스트 형태로 감쌉니다.

  • 변환된 결과를 변수에 할당합니다.

  • 해당 변수를 인자로 넘겨 메서드를 호출합니다.

  • 최종 병합 결과를 콘솔에 출력합니다.