튜플로 이루어진 리스트에서 특정 자릿수를 가진 요소만 추출해야 하는 경우가 종종 있습니다. 이럴 때 리스트 컴프리헨션(List Comprehension)을 활용하면 간결하고 효율적으로 처리할 수 있습니다.
아래는 그 구현 예시입니다.
예제 코드
my_list = [(67, 2), (34, 65), (212, 23), (17, 67), (18, )]
print("The list is : ")
print(my_list)
N = 2
print("The value of N is ")
print(N)
my_result = [sub for sub in my_list if all(len(str(ele)) == N for ele in sub)]
print("The extracted tuples are : " )
print(my_result)실행 결과
The list is : [(67, 2), (34, 65), (212, 23), (17, 67), (18,)] The value of N is 2 The extracted tuples are : [(34, 65), (17, 67), (18,)]
코드 설명
먼저 여러 개의 튜플을 포함하는 리스트를 정의하고, 콘솔에 출력합니다.
자릿수 기준이 될 변수 N을 2로 초기화한 후 화면에 표시합니다.
리스트 컴프리헨션을 사용하여 리스트를 순회하면서,
all()함수와len(str(ele))조합으로 각 튜플 내 모든 요소의 자릿수가 지정된 값(여기서는 2)과 일치하는지 검사합니다.조건을 만족하는 튜플들만 새로운 변수
my_result에 할당됩니다.마지막으로 필터링된 결과를 콘솔에 출력합니다.
핵심 포인트
이 코드에서 핵심 역할을 하는 것은 all() 함수입니다. 튜플 내부의 모든 요소가 조건을 충족해야만 해당 튜플이 결과에 포함되기 때문에, 하나라도 자릿수가 다른 요소가 있으면 전체 튜플이 제외됩니다. 예를 들어 (212, 23)은 212가 세 자리 수이므로 결과에서 제외된 것을 확인할 수 있습니다.
또한 str()로 변환 후 길이를 재는 방식은 음수나 소수점이 포함된 숫자에는 부호나 소수점까지 길이에 포함되므로, 필요에 따라 추가적인 전처리를 고려하는 것이 좋습니다.