当前位置: 首页 > 面试题库 >

如何从包含在另一个列表中的项目中找到的单词的列表中删除项目[重复]

曹焱
2023-03-14
问题内容

这个问题已经在这里有了答案

循环“忘记”以删除一些项目[重复] (10个答案)

6年前关闭。

我想从列表“ a”中删除项目,其中列表“ b”包含在列表“ a”中找到带有单词的项目

a = ['one two three', 'four five six', 'seven eight nine']
b = ['two', 'five six']

结果应为:

a = ['seven eight nine']

这是因为在列表“ a”的项目中找到了单词“二”和“五六”。

这是我尝试解决的方法:

for i in a:
    for x in b:
        if x in i:
            a.remove(i)

返回:

print a
['four five six', 'seven eight nine']

为什么这不起作用,如何解决此问题?

谢谢。


问题答案:

遍历列表时,请勿修改列表。这样做会产生不良的副作用,例如循环跳过项目。

通常,在Python中,应避免循环一次在列表中添加和删除元素的循环。通常,这些循环可以用更多惯用的列表理解代替。

[sa for sa in a if not any(sb in sa for sb in b)]

值得一提的是,按书面方式修复循环的一种方法是遍历列表的 副本 ,以使循环不受原始更改的影响。

for i in a[:]:
    for x in b:
        if x in i:
            a.remove(i)


 类似资料:
  • 我正在从远程数据库读取一组行,从本地数据库读取一组类似的行,然后使用RemoveAll删除本地已经存在的远程行。。。 但这对我来说似乎不对。当我真正需要做的只是检查是否存在匹配项时,我认为我不应该计算事物。我尝试了和的各种用法,但得到了废话。我不能使用(如这里建议的),因为列表元素不是同一类型。 有更好的方法吗?

  • 问题内容: 在遍历列表时,我想根据条件删除列表中的项。请参见下面的代码。 这给了我一个例外。 如何才能做到这一点? 问题答案: 您需要使用和调用上,而不是使用循环。

  • 问题内容: 我有表,我想将它做成。我该怎么办? 问题答案: Python清单 list.pop(索引) 删除列表[索引] 这些都将修改您的原始列表。 其他人建议使用切片: 复制清单 可以返回一个子集 另外,如果要执行许多pop(0),则应查看collections.deque 从列表的左端提供更高的性能

  • 我对Mongo的Webservice调用返回以下JSON。我需要迭代这个JSON值并删除Item-product_语言,因为它包含NULL/空字符串。 你对怎么做有什么想法吗? Python 3.4版本。 { }

  • 我有个名单 我需要用java生成一组列表,如下所示 以下是我目前的代码 输出 预期

  • 问题内容: 我正在尝试从具有相同的第一项和第三项但仅保留第一项的列表中删除列表。示例列表和输出: 由于原始列表包含数百万个列表,因此我编写的代码需要很长时间才能执行。 如何改善代码?提前致谢。 问题答案: 改进的版本: 更改为: 使用的,这使得查找更快。 转成元组,因为没有必要存储唯一的第一和第三元素列表。 减少的函数查找也可以加快代码的速度。