首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么输出不打印列表?

为什么输出不打印列表?
EN

Stack Overflow用户
提问于 2017-05-04 16:40:50
回答 1查看 556关注 0票数 0

我正在使用Python中的nltk库;我的背景是Java。我不理解我编写的代码的控制台输出。为什么Python会返回一个奇怪的表单,尽管我将变量tokens初始化为list。

代码语言:javascript
复制
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
import nltk
def tokenize_sentence(sentence):
    tokens=[]
    tokens = word_tokenize(sentence)

    tokens = (word for word in tokens if word not in \
              set(stopwords.words('english')))
    return tokens;

a="John is an actor."
print(tokenize_sentence(a))

输出:

代码语言:javascript
复制
<generator object tokenize_sentence.<locals>.<genexpr> at 0x10dc5b1a8>

当我试图打印未定义toString()方法的对象时,我认为这个输出类似于Java所做的事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-04 16:48:04

初始赋值不是类型声明。Python变量没有类型声明。例如,你可以写

代码语言:javascript
复制
x = 7
x = []
x = "Hello"

..。并查看x随每个赋值更改类型。

在本例中,您有三个独立的任务要标记。每一种方法的工作方式都是相同的:

  1. 评估右侧的表达式。
  2. 使左边的变量引用该值。

忽略变量的先验值。当您构建一个内联生成器--您的(逐字.)表达式--并将它分配给令牌时,您将前面的值发送到位桶(即垃圾收集)。当您打印生成器时,而不是迭代它的功能时,您得到了对象的Python表示。

正如已经提到的,如果您想要一个列表,那么使用列表理解语法:括号,而不是括号。另外,您是否打算使用令牌的先验值进行任何计算?目前,我不认为这些作业有任何持久的影响。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43788506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档