删除列表中列表中的项目

Delete item in a list within a list

stopwords 是一个字符串列表,tokentext 是一个字符串列表列表。 (每个列表是一个句子,列表列表是一个文本文档)。
我只是想取出 tokentext 中也出现在 stopwords 中的所有字符串。

for element in tokentext:
    for word in element:
        if(word.lower() in stopwords):
             element.remove(word)

print(tokentext)

我希望有人指出我遍历列表的方式中的一些根本缺陷..

这是一个失败的数据集: http://pastebin.com/p9ezh2nA

在迭代列表的同时更改列表总是会产生问题。试试像这样的东西:

stopwords = ["some", "strings"]
tokentext = [ ["some", "lists"], ["of", "strings"] ]

new_tokentext = [[word for word in lst if word not in stopwords] for lst in tokentext]
# creates a new list of words, filtering out from stopwords

或使用filter:

new_tokentext = [list(filter(lambda x: x not in stopwords, lst)) for lst in tokentext]
# the call to `list` here is unnecessary in Python2

你可以做一些简单的事情,比如:

for element in tokentext:
    if element in stop words:
        stopwords.remove(element)

它有点像你的,但没有额外的 for 循环。但我不确定这是否有效,或者这是否是您想要实现的目标,但这是一个想法,我希望它能有所帮助!