리스트에 담긴 요소 중에서 다른 리스트로 제시된 값들의 배수(공배수)에 해당하는 요소만 골라 출력해야 하는 경우, 리스트 컴프리헨션(list comprehension)을 활용하면 간결하고 효율적으로 해결할 수 있습니다.
예제
다음은 그 구현 방식을 보여주는 예시입니다.
my_list = [45, 67, 89, 90, 10, 98, 10, 12, 23]
print("The list is :")
print(my_list)
my_division_list = [6, 4]
print("The division list is :")
print(my_division_list)
my_result = [element for element in my_list if all(element % j == 0 for j in my_division_list)]
print("The result is :")
print(my_result)
출력
The list is : [45, 67, 89, 90, 10, 98, 10, 12, 23] The division list is : [6, 4] The result is : [12]
설명
먼저 하나의 리스트를 정의한 뒤, 콘솔 화면에 출력합니다.
나누는 기준이 될 정수들로 구성된 또 다른 리스트를 정의합니다.
리스트 컴프리헨션을 사용해 원본 리스트의 각 요소를 순회하면서, 해당 요소가 기준 리스트의 모든 값으로 나누었을 때 나머지가 0이 되는지 검사합니다.
조건을 만족하는 요소만 새로운 리스트에 저장되고, 그 결과가 변수에 할당됩니다.
마지막으로 최종 결과를 콘솔 화면에 출력합니다.
핵심 포인트: all() 함수
이 코드에서 핵심적인 역할을 하는 것은 all() 함수입니다. all()은 반복 가능한 객체(iterable) 안의 모든 요소가 참일 때만 True를 반환하므로, 기준 리스트 [6, 4]의 모든 숫자로 나누어 떨어지는지를 한 번의 조건식으로 확인할 수 있습니다. 위 예제에서는 나머지 연산자 %를 통해 나눗셈 후 나머지가 0인지 판별하며, 두 조건(6과 4의 배수)을 동시에 만족하는 유일한 값인 12만 결과 리스트에 남게 됩니다.