in과 not in은 한 문자보다 더 많은 문자를 지니고 있는 부분 문자열을 테스트하는 데도 사용할 수 있다. 이 경우 전체 부분 문자열을 포함하고 있어야 True가 반환된다.
'bad' in 'a bad dog' # 참!
in 연산자는 모든 문자열이 빈 문자열('')을 포함하고 있다고 생각하는 반면, 모든 리스트가 빈 리스트를 항목으로 가지고 있다고 생각하지는 않는다. 이 차이점을 기억하기 바란다.
print('' in 'cat') # True 출력
print([] in [1, 2, 3]) # False 출력
단일-문자 연산자가 중요한 또 다른 영역은 for 루프와 순회다. 리스트를 순회하면 각 항목을 반환하는 반면, 문자열을 순회하면 문자열에 포함된 각각의 문자를 반환한다. 다시 한 번 언급하지만, 이 문자는 별도의 ‘문자’ 타입 객체가 아니라 길이가 1인 문자열이다.
s = 'Cat'
for ch in s:
print(ch, ', type:', type(ch))