删除列表中列表中的项目
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 循环。但我不确定这是否有效,或者这是否是您想要实现的目标,但这是一个想法,我希望它能有所帮助!
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 循环。但我不确定这是否有效,或者这是否是您想要实现的目标,但这是一个想法,我希望它能有所帮助!