在另一个位置终端打印结果?

Terminal printing results at another location?

各位。我是一个新手程序员,我似乎无法在网上的任何地方找到这些信息,所以我希望你们能提供帮助。我的问题是,有时当我尝试打印结果时,终端会吐回类似“”或“”的内容,而不是结果。实际上,我是直接从一本书中遵循非常简短、非常简单的代码行,但仍然得到了这些结果。

这里有一些例子可以更好地说明正在发生的事情。

在第一个例子中,"potato"只是一个随机文本文档的文件句柄名称。

import nltk
def diversity(potato):
    return len(potato) / len(set(potato))
print diversity(potato)
#prints <function diversity at 0x107b5a848>">

import nltk
print bigrams(['make', 'me', 'some', 'bigrams'])
#prints <generator object bigram at 0x1088a4d20> 

然而在教科书的例子中只是展示了正确的打印结果。如果知道这一点很重要,我正在专门研究 Bird、Klein 和 Loper 的书 "Natural Language Processing with Python",我是 运行 Python 2.7.9.

任何人都可以解释发生了什么以及我该如何解决这个问题?这些都是非常简单的代码行,答案也非常简单,所以我的终端似乎拒绝打印正确答案这一事实令人恼火和担忧。谢谢!

第二个例子很容易解释。

nltk.bigrams 函数的 return 值是 generator。 如果您想查看它 return 的实际值,您需要对其进行迭代并打印其值:

In [11]: for bigram in  nltk.bigrams(['make', 'me', 'some', 'bigrams']):
   ....:     print bigram
   ....:     
('make', 'me')
('me', 'some')
('some', 'bigrams')