【问题标题】:Python remove item from list if present in other list [duplicate]如果存在于其他列表中,Python从列表中删除项目[重复]
【发布时间】:2026-01-29 23:00:01
【问题描述】:

我已将一些数据作为字符串抓取,并将其附加到两个单独的列表中。

如果item 存在于另一个名为list_bosses_BP 的列表中,我想从名为list_creatures_BP 的列表中删除一个item(虽然item 可以包含多次)。

这是我的代码:

# append creatures to creatures list
for creatue in result_creatures_bp:
    list_creatures_BP.append(creatue.text)


# append bosses to bosses list
for boss in result_bosses_bp:
    list_bosses_BP.append(boss.text)


# delete bosses from creatures list
for item in list_creatures_BP:
    if item in list_bosses_BP:
        while item in list_creatures_BP:
            list_creatures_BP.remove(item)

但该项目仍然存在于两个列表中。

我错过了什么?

【问题讨论】:

    标签: python string list while-loop


    【解决方案1】:

    我猜你的意思是:

    newlist = []
    for item in list_creatures_BP:
        if item not in list_bosses_BP:
            newlist.append(item)
    

    或者只是:

    newlist = [item for item in list_creatures_BP if item not in list_bosses_BP]
    

    您的代码不起作用的原因是:

    • 您有一个带有remove 的while 循环,remove 在循环中的行为异常,它总是会右移并且会错误地修改列表。

    【讨论】:

    • 如果您不打算为此类常见问题寻找重复项,请至少在答案中说明问题,而不仅仅是提供代码。
    • @KarlKnechtel 好的
    • @KarlKnechtel 编辑了我的答案
    最近更新 更多