13.7 무작위 단어
히스토그램에서 단어를 무작위로 선택하는 가장 간단한 알고리즘은 관찰된 빈도만큼 각 단어의 사본을 갖는 리스트를 만들고, 이 리스트에서 단어를 선택하는 것이다.
def random_word(h):
t = []
for word, freq in h.items():
t.extend([word] * freq)
return random.choice(t)
표현식 [word] * freq는 문자열 word의 복제본을 freq만큼 갖는 리스트를 생성하게 한다. extend 메서드는 인수가 시퀀스인 점을 제외하면 append와 비슷하다.
이 알고리즘으로도 동작하지만, 그다지 효율적이지는 않다. 무작위 단어를 선택할 때마다 리스트를 재구축해야 하는데, 이 리스트가 원본 책만큼이나 크다. 리스트를 한 번만 구축하고, 선택을 여러 번 할 수 있다면 확실하게 성능이 개선되지만, 여기에는 여전히 리스트가 크다는 문제가 남는다.