Отвечая на вопрос как же "вывести первую биграмму в списке, а потом первое слово первой биграммы списка. Как это сделать?"
Раз уж выяснили почему цикл ничего не выводил, то так:
for bigram in bigrams:
print(bigram, bigram[0], sep='\n')
Думаю потому что ngrams это функция которая возвращает генератор, а по генератору можно пройтись лишь раз что и делает вызов list(), поэтому дальнейший цикл ничего не делает
>>> def ngrams():
... for i in [1,2,3]:
... yield i
...
>>> s = ngrams()
>>> list(s)
[1, 2, 3]
>>> for i in s:
... print(i)
...
>>> s = ngrams()
>>> for i in s:
... print(i)
...
1
2
3
>>> list(s)
[]
upd: да, если смотреть в сорцы то именно это она и делает.
Валерий Сиволапенко, Тут тебе надо с функцией parse_table разбираться или сделать как я написал в ответе, ну естественно чуть-чуть подправить, чтобы классы не хардкодить.
305 Use Proxy — запрос к запрашиваемому ресурсу должен осуществляться через прокси-сервер, URI которого указан в поле Location заголовка. Данный код ответа могут использовать только исходные HTTP-сервера (не прокси). Введено в HTTP/1.1.