더북(TheBook)

4.2.11 문자열은 문자의 나열로 다룬다

각각의 문자들로 복잡한 연산 처리를 한 후 문자열을 만든다면 문자(길이가 1인 문자열)로 이루어진 리스트를 생성하여 join과 함께 리스트 함축을 사용하는 것이 더 효율적일 때가 있다.

예를 들어 문자열이 회문6인 것을 테스트할 때 입력한 문자열의 모든 구두점과 빈칸을 제거한 후 모든 글자를 대문자 혹은 소문자로 바꾸는 것이 편리하다. 다음과 같이 리스트 함축은 이 작업을 효율적으로 수행한다.

test_str = input('Enter test string: ')
a_list = [c.upper() for c in test_str if c.isalnum()]
print(a_list == a_list[::-1])

코드의 두 번째 줄에서 3.15절에서 소개한 리스트 함축을 보여 준다.

세 번째 줄에서는 슬라이싱을 사용하여 역순으로 변경된 리스트를 확보하고 있다. 이제 test_str이 회문인지 아닌지를 테스트할 수 있게 되었다. 이 코드 3줄은 문자열이 회문 유무를 테스트할 수 있는 가장 짧은 프로그램이다. 얼마나 간결한가!

Enter test string: A man, a plan, a canal, Panama!
True

 

 


6 역주 앞에서부터 읽으나, 뒤에서부터 읽으나 같은 문자열을 의미한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.