我是python的新手。在这里,我测试的是变量wordlist
已在循环中使用的示例。
在使用之前是否需要手动声明?或者它会被声明为运行时?
我甚至试过手动声明但是它仍然是空的。
我正在关注此示例:http://www.sjwhitworth.com/sentiment-analysis-in-python-using-nltk/
如果我直接使用它:
wordlist = [i for i in wordlist if not i in stopwords.words('english')]
wordlist = [i for i in wordlist if not i in customstopwords]
它给出错误:
wordlist = [i for i in wordlist if not i in stopwords.words('english')]
NameError: name 'wordlist' is not defined
我像这样手动宣布wordlist
wordlist = []
但在这种情况下它仍然是空的:
wordlist = []
wordlist = [i for i in wordlist if not i in stopwords.words('english')]
wordlist = [i for i in wordlist if not i in customstopwords]
print wordlist
我在这里做错了什么?
答案 0 :(得分:1)
你的第一个清单理解:
wordlist = [i for i in wordlist if not i in stopwords.words('english')]
大致相当于:
tmp_lst = []
for i in wordlist:
if i not in stopwords.words('english'):
tmp_lst.append(i)
wordlist = tmp_lst
当你以这种方式阅读时,很明显wordlist
必须是之前可以迭代的东西。当然, {/ em> wordslist
应由您自己决定并且完全依赖于您正在努力实现的目标......
答案 1 :(得分:1)
以下是列表推导在python中的工作原理。假设您有一个列表x
,如
x=[1,2,3,4]
并且您想使用列表理解来增加其值:
y=[element+1 for element in x]
# ^ ^ ^
#element element list on which
#to be added operations are
#in list of y performed
输出:
y=[2,3,4,5]
在您的情况下,x
(即,wordlist
)为空,因此for
循环不会迭代。根据上述link的说明,wordlist
应该是一系列艺术家名称。
wordlist = ["Justin Timberlake", "Tay Zonday", "Rebecca Black"]