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

空字符串导致数据移除操作出现意外输出

问题原因

你这是踩了Python遍历列表时修改原列表的经典坑——遍历过程中删除元素会打乱列表的索引顺序,导致部分元素被跳过。

举个具体流程:
原列表索引0到7依次是:'$301,000'、''、'3 days'、'$33,333'、''、'2 days'、'$40,000'、'6 days'
当循环到索引1的空字符串,执行remove后,列表元素会整体前移一位,原索引2的'3 days'移到了索引1的位置。但循环的下一个迭代会直接跳到索引2,导致'3 days'根本没被检查到,自然不会被移除。同理,索引4的空字符串被移除后,'2 days'前移也被跳过。只有最后一个'6 days'因为前面没有元素被移除,所以能被正常检查并删除。

解决方案

推荐三种靠谱的解决方法:

1. 列表推导式(最简洁高效)

直接生成新列表,只保留包含$的元素:

priceList = ['$301,000', '','3 days', '$33,333', '', '2 days', '$40,000', '6 days']
filtered_list = [item for item in priceList if "$" in item]
print(filtered_list)

输出:

['$301,000', '$33,333', '$40,000']

2. 遍历原列表的副本

遍历原列表的拷贝,这样修改原列表不会影响遍历的顺序:

priceList = ['$301,000', '','3 days', '$33,333', '', '2 days', '$40,000', '6 days']
# 遍历列表的副本,而不是原列表
for i in priceList.copy():
    if not "$" in i:
        priceList.remove(i)
print(priceList)

3. 倒序遍历

从列表末尾开始遍历,删除元素不会影响前面未遍历的元素索引:

priceList = ['$301,000', '','3 days', '$33,333', '', '2 days', '$40,000', '6 days']
for i in reversed(priceList):
    if not "$" in i:
        priceList.remove(i)
print(priceList)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 17:25:20