python - 如果满足条件,如何在迭代该列表时在列表中插入值?
问题描述
问题; 遍历这个列表,无论你在哪里找到一个 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")
但这会失败,但说明了这个想法?
我搜索了很多堆栈问题,但似乎找不到一个优雅的解决方案。我觉得我也用错误的逻辑来处理这个问题,因为我相信你不应该改变你正在迭代的列表?
解决方案
是的,你是对的......你不应该改变你正在迭代的列表。因此,您需要创建列表的两个版本...一个是原始版本 ( 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]
推荐阅读
- proxy - 多代理在使用 http-proxy-middleware 创建 React App 时不起作用
- php - 将结帐功能中计算的费用复制到 WP 管理员
- sql - 考虑到员工ID保持不变的事实,计算有多少员工在公司内部改变了职位
- python - 如何确定线性方程组(不等式)在 3D 中是否为闭合形状等
- sql - 如何设计数据库以拥有不同领域的用户?
- java - 如何处理用户在扫描仪中输入无效类型?
- aem - 支持用于创建体验片段模板的 xfPage 组件的 OOTB sign 模型是什么?
- php - PHP for循环按数量升序显示条目
- .htaccess - 在 Apache Webserver 上提供的 Play Framework 应用程序的 .htaccess 文件的位置
- angular - 无法实例化循环依赖!减速器管理器