我有一个列表,我想从中删除未出现在另一个列表中的项目.我尝试过以下方法:
for w in common:
for i in range(1,n):
if not w in words[i]:
common.remove(w)Run Code Online (Sandbox Code Playgroud)
但是,这无法删除某些项目.添加打印语句for w in common:
for i in range(1,n):
print w
if not w in words[i]:
print w
common.remove(w)Run Code Online (Sandbox Code Playgroud)导致一些人永远不会被打印出来.关于发生了什么的任何想法?我认为答案很简单,我只是没有足够的Python知识,但我完全没有想法.
我想你可以通过以下方式简化你的陈述:
filtered = filter(lambda x: x in words, common)
Run Code Online (Sandbox Code Playgroud)
这是检查每个元素的共同点,因为它存在于单词中并基于它进行删除.你可能需要尝试x not in words取决于你想要的结果,但我认为应该接近.
我想添加另一种方法,也可能会接近,但我需要查看初始列表的示例以完全测试它.
filtered = [x for x in common if x in words]
Run Code Online (Sandbox Code Playgroud)
- 编辑 - 我在列表理解中向后调整了语法,但在看到评论后就抓住了它.谢谢!