You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中基于部分搜索字符串删除列表元素?

删除列表中包含指定子串的元素

问题

给定列表:

images = ['fcs-apple-5.5.4','gcs-banana-0.6.4','tf-2', 'mvc-grape-3.4.2'] 

需要删除包含子串grape的列表项,要求通过for循环实现匹配并删除,保留其余完整列表项,最终得到:

images = ['fcs-apple-5.5.4','gcs-banana-0.6.4','tf-2'] 

解决方法

方法1:遍历列表副本删除匹配项

直接遍历原列表的副本,修改原列表时不会干扰遍历过程:

images = ['fcs-apple-5.5.4','gcs-banana-0.6.4','tf-2', 'mvc-grape-3.4.2'] 
target_substr = 'grape'

# 遍历列表副本,避免遍历原列表时修改导致的索引异常
for item in images.copy():
    if target_substr in item:
        images.remove(item)

print(images)

执行后输出符合预期的结果。

方法2:倒序遍历索引删除

通过enumerate获取元素索引,倒序遍历可避免删除元素后后续索引错位的问题:

images = ['fcs-apple-5.5.4','gcs-banana-0.6.4','tf-2', 'mvc-grape-3.4.2'] 
target_substr = 'grape'

# 倒序遍历索引与元素,确保删除操作不影响未遍历的元素位置
for idx, item in reversed(list(enumerate(images))):
    if target_substr in item:
        del images[idx]

print(images)

这种方法直接通过索引删除元素,同样能得到目标结果。

注意:不要直接正序遍历原列表并删除元素,这会导致列表长度变化后,后续元素索引前移,出现遍历遗漏或索引越界的问题。

内容的提问来源于stack exchange,提问作者mac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 20:42:51