Python 리스트를 다루다 보면 요소의 값 전체가 아니라 첫 번째 자릿수에만 관심이 있는 경우가 있습니다. 예를 들어 여러 숫자가 모두 같은 숫자로 시작하는지 빠르게 판별해야 할 때가 그렇습니다. 이 글에서는 리스트의 모든 요소가 동일한 첫 자릿수를 가지고 있는지 확인하는 두 가지 방법을 소개합니다.
set과 map 활용하기
Python의 set(집합)은 중복 값을 허용하지 않는 자료구조입니다. 이 특성을 활용하면 조건 검사가 매우 간단해집니다. 먼저 map(str, ...)으로 각 요소를 문자열로 변환한 뒤 첫 번째 문자, 즉 첫 자릿수만 추출하여 set에 담습니다. 만약 모든 요소의 첫 자릿수가 같다면 중복이 제거된 set의 길이는 정확히 1이 됩니다.
예제 코드
Alist = [63,652,611,60]
# 주어진 리스트
print("Given list : ",Alist)
# set과 map 사용
if len(set(x[0] for x in map(str, Alist))) == 1:
print("All elements have same first digit")
else:
print("Not all elements ,have same first digit")실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Given list : [63, 652, 611, 60] All elements have same first digit
all() 함수 활용하기
두 번째 방법은 첫 번째 요소의 첫 자릿수를 기준값으로 삼는 접근 방식입니다. 리스트의 모든 요소를 순회하면서 각 요소의 첫 자릿수가 기준값과 일치하는지 all() 함수로 검사합니다. 하나라도 다른 요소가 있다면 all()은 False를 반환하므로, 결과적으로 리스트 전체가 같은 첫 자릿수를 가지는지 한 번에 판별할 수 있습니다.
예제 코드
Alist = [63,652,611,70]
# 주어진 리스트
print("Given list : ",Alist)
# all() 함수 사용
if all(str(i)[0] == str(Alist[0])[0] for i in Alist):
print("All elements have same first digit")
else:
print("Not all elements ,have same first digit")실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Given list : [63, 652, 611, 70] Not all elements, have same first digit
정리
set을 이용한 방법은 코드가 짧고 직관적이며, all()을 이용한 방법은 불필요한 집합 생성 없이 비교할 수 있어 상황에 따라 유연하게 선택할 수 있습니다. 두 방법 모두 문자열 변환 후 인덱싱으로 첫 자릿수를 얻는다는 공통점이 있으므로, 음수나 소수처럼 특수한 형태의 숫자를 다룰 때는 사전 처리 로직을 추가하는 것이 좋습니다.