python - 如何从包含在另一个列表中的项目中找到的单词的列表中删除项目

标签 python list

<分区>

我想从列表“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)]

就其值(value)而言,一种修复所写循环的方法是遍历列表的副本,这样循环就不会受到原始更改的影响。

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

关于python - 如何从包含在另一个列表中的项目中找到的单词的列表中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18790072/

相关文章:

python - 模块属性导入

python - 带有 keras 的 CNN 架构

python - Pandas - 根据另一个列表中的索引对列表中的值求和

list - 删除列表的中间元素

python - 列表分配 [ :]

python - 从数字元组对到所有单个数字的一​​个元组的最佳方法

python - 如何修复 ZigZag 问题中的 'list index out of range' 错误?

python - 在 Jupyter - Python 中有 2 个 Ipywidgets 作用于一个 matplotlib 图

python - Hive Python UDF

JAVA ANDROID - 获取文件夹的列表文件