python - 如果满足条件,则替换列表中的元素和后续元素

标签 python loops

我有一个如下所示的列表:

a=[1,2,3,4,5,2,3,1,2,3,4,5,1,5,5,3,2,1,3,1]

我正在寻找一种方法,每次它找到 1 时,这个元素和接下来的两个元素都被替换为 -999。以下代码似乎有效。

b = a
x = 2 #number of continuous elements to browse 
for n,i in enumerate(a):
    if i==1:
        for t in range(x):
            print n+t
            b[n+t]=-999

print b

但是,当 1 位于列表末尾时,我得到:

IndexError: list assignment index out of range

有更好的方法吗?

最佳答案

这是一种特殊情况 - 对于列表末尾的元素,下一个元素不存在。在访问列表之前,您需要在内循环中检查这种特殊情况:

if n+t >= len(b):
    break

关于python - 如果满足条件,则替换列表中的元素和后续元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48010462/

相关文章:

arrays - 使用循环的二维数组,奇怪的输出?

javascript - 如何在 React.js 中映射到另一个 map 内

python - 关于是否在 TCP 代理项目中使用 Twisted 的一般问题

python - 使字符串成为有效的文件名,以后可以将其视为原始字符串

javascript - 使用javascript如何在设定时间后打破while循环?

php - 为学生分配职位,PHP

python - 如何在Python中加载带有日期和时间的文件作为日期时间对象?

python - 快速查找集合中的 numpy 向量

python - 根据另一列减去某个 pandas 数据框列的最小值

android - 如何通过MediaPlayer播放一次铃声?