首页 > 解决方案 > 如果满足条件,如何在迭代该列表时在列表中插入值?

问题描述

问题; 遍历这个列表,无论你在哪里找到一个 2,修改这个列表,这样你就可以在它的前后加上“Found”和“Target”标志。

预期输入:l = [1,0,1,0,2,1,0,2,0,1]
预期输出:l = [1,0,1,0,"Found",2,"Target", 1,0,"找到",2,"目标",0,1]

似乎很容易?

l = [1,0,1,0,2,1,0,2,0,1]

for i in range(len(l)):
    if l[i] == 2:
        l.insert(i-1,"Found")
        l.insert(i-+,"Target")

但这会失败,但说明了这个想法?

我搜索了很多堆栈问题,但似乎找不到一个优雅的解决方案。我觉得我也用错误的逻辑来处理这个问题,因为我相信你不应该改变你正在迭代的列表?

标签: pythonfor-loop

解决方案


是的,你是对的......你不应该改变你正在迭代的列表。因此,您需要创建列表的两个版本...一个是原始版本 ( l),另一个是迭代后的原始版本 ( new_l)。

这就是我的意思:

l = [1,0,1,0,2,1,0,2,0,1]
new_l = []

for i in range(len(l)):
    if l[i] == 2:
        new_l.extend(["Found", l[i], "Target"])
    else:
        new_l.append(l[i])
print(new_l)
# [1,0,1,0,"Found",2,"Target",1,0,"Found",2,"Target",0,1]

推荐阅读