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

Python - 리스트에 특정 숫자가 포함되어 있는지 확인하는 방법

파이썬에서 리스트에 특정 숫자들이 모두 포함되어 있는지 확인해야 하는 경우, 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) 관용구로 널리 권장됩니다.