1.회문 판별하기
- 회문 : 순서를 거꾸로 읽어도 제대로 읽은 것과 같은 단어와 문장
단어를 입력하세요: level (입력)
단어를 입력하세요: hello (입력)
1-1.시퀀스로 뒤집기로 문자 검사하기
- 시퀀스의 객체 슬라이스를 활용하면 간단하게 판별
word = input('단어를 입력하세요: ')
print(word == word[::-1]). # 원래 문자열과 반대로 뒤집은 문자열을 비교
1-2.리스트와 reversed 사용하기
- 리스트에 문자열을 넣으면 문자 하나하나가 리스트의 요소로 들어감
word = 'level'
list(word) == list(reversed(word))
1-3.문자열의 join 메소드와 reversed 사용하기
- join은 구분자 문자열과 문자열 리스트의 요소를 연결
- join은 요소 사이에 구분자를 넣지면 빈 문자열 ''을 활용하여 각 문자를 그대로 연결하는 방식
word = 'level'
word == ''.join(reversed(word)) # ==로 비교하면 문자열이 회문인지 판별 가능
2.N-gram 만들기
- 문자열에서 N개의 연속된 요소를 추출하는 방법
- 2-gram으로 추출하면 두글자씩 추출
2-1.반복문으로 N-gram 출력하기
# 글자 단위 N-gram
text = 'Hello'
# 2-gram이므로 문자열의 끝에서 한 글자 앞까지만 반복함
for i in range(len(text)-1):
print(text[i], text[i+1], set['') # 현재 문자와 그다음 문자 출력
# 단어 단위 N-gram
text = 'this is python script'
words = text.split() # 공백을 기준으로 문자열을 분리하여 리스트로 만듦
# 2-gram이므로 리스트의 마지막에서 요소 한 개 앞까지만 반복함
for i in range(len(words)-1):
print(words[i], words[i+1]) # 현재 문자열과 그다음 문자열 출력
2-2.zip으로 2-gram 만들기
- zip 함수는 리스트 두 개를 딕셔너리로 만들 때 사용
- zip 함수는 반복 가능한 객체의 각 요소를 튜플로 묶어줌
text = 'this is python scripy'
words = text.split()
list(zip(words, words[1:]))
2-3.zip과 리스트 표현식으로 N-gram 만들기
text = 'hello'
[text[i:] for i in range(3)]
list(zip(['hello', 'ello', 'llo'])) # 이제 리스트를 zip에 넣기
list(zip(+['hello', 'ello', 'llo'])) # zip에 리스트의 각 요소를 콤마로 구분해서 넣어주려면 리스트 앞에 *