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

Python – 튜플 목록에 단일 요소만 있는지 테스트하는 방법

리스트 안의 여러 튜플이 모두 동일한 값(단일 요소)만 담고 있는지 확인해야 하는 경우가 있습니다. 이럴 때 플래그(flag) 변수중첩 반복문을 활용하면 손쉽게 검사할 수 있습니다.

예제 코드

다음은 튜플 목록에 단일 요소만 포함되어 있는지 테스트하는 예제입니다.

my_list = [(72, 72, 72), (72, 72), (72, 72)]

print('리스트는 다음과 같습니다:')
print(my_list)

my_result = True
for sub in my_list:
    flag = True
    for element in sub:
        if element != my_list[0][0]:
            flag = False
            break
    if not flag:
        my_result = False
        break

if my_result:
    print('모든 튜플이 단일 요소만 포함합니다')
else:
    print('단일 요소가 아닌 값이 존재합니다')

출력 결과

리스트는 다음과 같습니다:
[(72, 72, 72), (72, 72), (72, 72)]
모든 튜플이 단일 요소만 포함합니다

코드 설명

  • 먼저 여러 개의 튜플을 담은 리스트를 정의하고 콘솔에 출력합니다.
  • 검사 결과를 저장할 변수 my_resultTrue로 초기화합니다.
  • 바깥쪽 반복문으로 리스트의 각 튜플을 순회하며, 매번 내부 플래그를 True로 설정합니다.
  • 안쪽 반복문에서 튜플의 각 요소를 첫 번째 튜플의 첫 번째 요소(my_list[0][0])와 비교하여, 다른 값이 발견되면 플래그를 False로 바꾸고 즉시 반복을 종료합니다.
  • 플래그가 False가 되면 my_result 역시 False로 변경된 뒤 전체 반복문을 빠져나옵니다.
  • 마지막으로 my_resultTrue라면 모든 튜플이 동일한 값만 가진다는 의미이며, 검사 결과에 맞는 메시지를 콘솔에 출력합니다.

더 간결한 방법: all() 함수 활용

중첩 반복문 대신 제너레이터 표현식과 all() 함수를 사용하면 위 로직을 한 줄로 줄일 수 있습니다.

my_list = [(72, 72, 72), (72, 72), (72, 72)]

result = all(element == my_list[0][0] for sub in my_list for element in sub)
print(result)  # True

all()은 주어진 조건이 모두 참일 때만 True를 반환하므로, 별도의 플래그 변수 없이도 동일한 검사를 간결하게 수행할 수 있습니다.