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

Python列表删除首至第二个0间元素报错及解决咨询

问题分析与解决

错误原因

你代码里的' '.join(L)会报错,因为join()方法只能拼接字符串序列,但你的列表L里存的是整数(通过int(x)转换来的),直接把整数列表传给join(),就会触发「期望字符串实例,却得到整数」的类型错误。

而且就算你把L转成字符串列表,后面的逻辑也有问题:(' '.join(L)).find('0', ...)返回的是字符串里的字符位置,不是列表的索引,不能直接用L.index()去匹配这个数值(因为这个数值是字符串中的下标,和列表索引完全不是一回事)。

正确实现方式

要删除第一个0到第二个0(包含两者)的所有元素,核心是准确找到两个0的列表索引,然后用切片删除:

L = [int(x) for x in input().split()]
# 找到第一个0的索引
first_idx = L.index(0)
# 从第一个0的下一位开始找第二个0的索引
second_idx = L.index(0, first_idx + 1)
# 切片删除:因为切片是左闭右开,所以结束索引要+1才能包含第二个0
L[first_idx : second_idx + 1] = []
print(L)

测试示例

输入:1 0 2 3 0 4
输出:[1, 4]

额外提示

如果输入的列表里不足两个0,L.index(0, first_idx + 1)会抛出ValueError,可以加个判断避免报错:

L = [int(x) for x in input().split()]
zero_count = L.count(0)
if zero_count >= 2:
    first_idx = L.index(0)
    second_idx = L.index(0, first_idx + 1)
    L[first_idx : second_idx + 1] = []
print(L)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:57:10