搜索列表中的元素并在python中将其删除

时间:2017-11-02 05:29:17

标签: python

我有一份清单如下。

mylist = [["i", "love", "to", "eat", "tim tam"], ["tim tam", "is", "my", "favourite", 
"chocolate", "and", "i", "eat", "it", "everyday"]]

我还有一个列表stops,如下所示。

stops = ["and", "the", "up" "to", "is", "i", "it"]

现在,我想搜索mylist并从中删除上述stops。因此,我的最终mylist将如下所示。

mylist = [["love", "eat", "tim tam"], ["tim tam", "my", "favourite", "chocolate", "eat", "everyday"]]

我目前的代码如下。

for k in mylist:
    for item in k:
        if k in stops:
            pop(k)

它给了我TypeError: unhashable type: 'list'。请帮帮我。

2 个答案:

答案 0 :(得分:0)

蛮力解决方案:

mylist = [["i", "love", "to", "eat", "tim tam"], ["tim tam", "is", "my", "favourite", 
"chocolate", "and", "i", "eat", "it", "everyday"]]

stops = ["and", "the", "up","to", "is", "i", "it"]

for currlist in mylist:
    for i in stops:
        if i in currlist:
            currlist.remove(i)

print(mylist)

希望这有帮助!

答案 1 :(得分:0)

最简单的方法是创建一个包含结果的新列表:

[[i for i in s if i not in stops] for s in mylist]

更有效的方法是创建一个stops的集合,使成员资格测试更快:

stops_set = set(stops)
[[i for i in s if i not in stops_set] for s in mylist]