我有一个列表,我想从中删除没有出现在另一个列表中的项目。我试过以下方法:
for w in common:
for i in range(1,n):
if not w in words[i]:
common.remove(w)
但是,这无法删除某些项目。添加打印语句
for w in common:
for i in range(1,n):
print w
if not w in words[i]:
print w
common.remove(w)
导致一些 w 永远不会被打印出来。关于发生了什么的任何想法?我认为答案很简单,我只是没有足够的 Python 知识,但我完全没有想法。
我想你可以用这样的东西来简化你的陈述:
filtered = filter(lambda x: x in words, common)
这是检查每个元素是否存在于单词中,并根据它删除。您可能需要尝试 x not in words
,具体取决于您想要的结果是什么,但我认为应该接近。
我想添加另一种方法,它也可能接近,但我需要查看您的初始列表示例以对其进行全面测试。
filtered = [x for x in common if x in words]
——已编辑——我在列表推导中的语法倒退了,但在看到评论后捕获了它。谢谢!
我是一名优秀的程序员,十分优秀!