我有一份清单如下。
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'
。请帮帮我。
答案 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]