파이썬에서 리스트에 특정 숫자들이 모두 포함되어 있는지 확인해야 하는 경우, join 메서드와 간단한 반복문을 활용하면 손쉽게 해결할 수 있습니다.
예제 코드
다음은 리스트에 특정 숫자들이 포함되어 있는지 검사하는 예제입니다.
my_list = [427, 789, 345, 122, 471, 124]
print("The list is :")
print(my_list)
my_digits = [1, 4, 7, 2]
digit_string = ''.join([str(ele) for ele in my_digits])
all_elems = ''.join([str(ele) for ele in my_list])
my_result = True
for element in all_elems:
for ele in element:
if ele not in digit_string:
my_result = False
break
if(my_result == True):
print("The list contains the required digits")
else:
print("The list doesn't contain the required digits")
실행 결과
The list is : [427, 789, 345, 122, 471, 124] The list doesn't contain the required digits
코드 설명
숫자로 이루어진 리스트를 정의하고 콘솔에 출력합니다.
확인 대상이 되는 숫자들을 담은 또 다른 정수 리스트를 정의합니다.
리스트 컴프리헨션(list comprehension)을 사용해 각 리스트의 요소를 문자열로 변환합니다.
join 메서드로 요소들을 하나의 문자열로 연결한 뒤 변수에 할당합니다.
원본 리스트에도 동일한 작업을 수행하여 전체 문자열(all_elems)을 만듭니다.
최종 결과를 저장할 변수를 True로 초기화합니다.
전체 문자열을 한 글자씩 순회하며, 해당 문자가 앞서 만든 숫자 문자열에 없으면 변수를 False로 변경하고 반복을 즉시 중단(break)합니다.
반복문 종료 후 변수 값이 True이면 "필요한 숫자가 포함되어 있다"는 메시지를, 그렇지 않으면 포함되어 있지 않다는 메시지를 출력합니다.
더 간결한 방법: all() 함수 활용하기
위 코드는 파이썬 내장 함수인 all()을 사용하면 훨씬 더 간결하게 표현할 수 있습니다.
my_list = [427, 789, 345, 122, 471, 124]
my_digits = [1, 4, 7, 2]
digit_string = ''.join(map(str, my_digits))
all_elems = ''.join(map(str, my_list))
if all(digit in digit_string for digit in all_elems):
print("The list contains the required digits")
else:
print("The list doesn't contain the required digits")
이 방식은 중첩된 반복문과 break 로직을 제거하여 코드의 가독성과 유지보수성을 크게 향상시켜 줍니다. 실무에서는 all()과 제너레이터 표현식을 조합하는 것이 파이썬다운(Pythonic) 관용구로 널리 권장됩니다.