여러 개의 문자열이 담긴 리스트가 있을 때, 각 문자열의 길이가 기대하는 값과 정확히 일치하는지 검사해야 하는 경우가 종종 있습니다. 이럴 때는 간단한 반복문과 파이썬 내장 함수 len()만으로도 손쉽게 해결할 수 있습니다.
예제 코드
아래 예제를 통해 실제 동작 과정을 살펴보겠습니다.
my_list = ["python", 'is', 'fun', 'to', 'learn', 'Will', 'how']
print("The list is :")
print(my_list)
length_list = [6, 2, 3, 2, 5, 4, 3]
my_result = True
for index in range(len(my_list)):
if len(my_list[index]) != length_list[index]:
my_result = False
break
print("The result is :")
if(my_result == True):
print("All the strings are of required lengths")
else:
print("All the strings are not of required lengths")
실행 결과
The list is : ['python', 'is', 'fun', 'to', 'learn', 'Will', 'how'] The result is : All the strings are of required lengths
코드 설명
검사 대상이 되는 문자열 리스트를 정의하고, 콘솔에 출력합니다.
각 문자열이 가져야 할 길이를 담은 정수 리스트를 함께 정의합니다.
최종 결과를 저장할 불린(Boolean) 변수를
True로 초기화합니다.문자열 리스트를 순회하면서, 해당 인덱스의 문자열 길이가 정수 리스트의 같은 인덱스 값과 다르면 불린 값을
False로 변경합니다.불일치가 발견되면
break문으로 반복문을 즉시 탈출하여 불필요한 연산을 줄입니다.마지막으로 불린 값에 따라 알맞은 메시지를 콘솔에 출력합니다.
더 간결한 방법: all() 함수 활용
위 코드는 all() 함수와 제너레이터 표현식을 사용하면 한 줄로 압축할 수 있습니다.
my_result = all(len(s) == l for s, l in zip(my_list, length_list))
print("The result is :", my_result)
zip() 함수는 두 리스트의 요소를 하나씩 짝지어 주고, all() 함수는 모든 조건식이 참인지 검사합니다. 덕분에 별도의 임시 변수나 반복문 없이도 동일한 결과를 얻을 수 있어 코드가 훨씬 깔끔해집니다.