首页 > 解决方案 > 无法将列表附加到另一个列表中。每次我附加到它时,它里面的前一个列表都会被删除

问题描述

请原谅我的菜鸟。我有一个列表列表:

print(tokens)
[['What', "'s", 'my', 'name', '?'], ['My', 'name', 'is', 'Aditya', '.'], ['My', 'name', 'is', 'Glen'], 
['My', 'name', 'is', 'Kenta', '.'], ['My', 'name', 'is', 'Keita'], ['My', 'name', 'is', 'Ganchan'], 
['My', 'name', 'is', 'Anna', '.'], ['My', 'name', 'is', 'Tho'], ['My', 'name', 'is', 'Joe', '.']]

我要做的是删除我下载并导入的 Python NLTK 库中默认停用词语料库中给出的所有停用词:

stop_words = set(stopwords.words('english'))

为此,我使用嵌套的 for 循环打开列表,并尝试将它们与停用词匹配。但是,当我尝试将其包装回嵌套列表时,它只包含最后一个列表。

编码:

filtered_tokens = []
filtered_tokens_list = []

for token in tokens:
    filtered_tokens.clear()
    for t in token:
        if t.upper() not in (name.upper() for name in stop_words):
            filtered_tokens.append(t)
    filtered_tokens_list.append(filtered_tokens)

filtered_tokens_list

输出:

[['name', 'Joe', '.'],
 ['name', 'Joe', '.'],
 ['name', 'Joe', '.'],
 ['name', 'Joe', '.'],
 ['name', 'Joe', '.'],
 ['name', 'Joe', '.'],
 ['name', 'Joe', '.'],
 ['name', 'Joe', '.'],
 ['name', 'Joe', '.']]

我试图通过filtered_tokens_list在每次迭代中打印出来来查看每次迭代的外观

for token in tokens:
    filtered_tokens.clear()
    for t in token:
        if t.upper() not in (name.upper() for name in stop_words):
            filtered_tokens.append(t)
    filtered_tokens_dict.append(filtered_tokens)
    print(filtered_tokens_dict)

输出是:

[["'s", 'name', '?']]
[['name', 'Aditya', '.'], ['name', 'Aditya', '.']]
[['name', 'Glen'], ['name', 'Glen'], ['name', 'Glen']]
[['name', 'Kenta', '.'], ['name', 'Kenta', '.'], ['name', 'Kenta', '.'], ['name', 'Kenta', '.']]
[['name', 'Keita'], ['name', 'Keita'], ['name', 'Keita'], ['name', 'Keita'], ['name', 'Keita']]
[['name', 'Ganchan'], ['name', 'Ganchan'], ['name', 'Ganchan'], ['name', 'Ganchan'], ['name', 'Ganchan'], ['name', 'Ganchan']]
[['name', 'Anna', '.'], ['name', 'Anna', '.'], ['name', 'Anna', '.'], ['name', 'Anna', '.'], ['name', 'Anna', '.'], ['name', 'Anna', '.'], ['name', 'Anna', '.']]
[['name', 'Tho'], ['name', 'Tho'], ['name', 'Tho'], ['name', 'Tho'], ['name', 'Tho'], ['name', 'Tho'], ['name', 'Tho'], ['name', 'Tho']]
[['name', 'Joe', '.'], ['name', 'Joe', '.'], ['name', 'Joe', '.'], ['name', 'Joe', '.'], ['name', 'Joe', '.'], ['name', 'Joe', '.'], ['name', 'Joe', '.'], ['name', 'Joe', '.'], ['name', 'Joe', '.']]

出于某种原因,整个列表都被最新的内容覆盖了filtered_tokens

我正在寻找的输出是:

[["'s", 'name', '?'],['name', 'Aditya', '.'],['name', 'Glen'],['name', 'Kenta', '.'],['name', 'Keita'],
['name', 'Ganchan'],['name', 'Anna', '.'],['name', 'Tho'],['name', 'Joe', '.']]

这很莫名其妙,我还没有在网上看到过这样的事情。非常感谢您的帮助!

标签: pythonpython-3.xlist

解决方案


推荐阅读