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

Python中如何在列表的每个指定单词后添加新单词?

在列表每个指定单词后插入指定元素的问题解决

需求说明

原列表:

original_list = ['add', 'add', 'ball', 'cup', 'add']

预期结果:

['add','Nice', 'add', 'Nice', 'ball', 'cup', 'add','Nice']

原有代码的问题分析

第一段代码

for word in list:
    if 'add' in word:
        list.insert(((list.index(word))+1,'Nice')
  • list.index(word)只会返回第一个匹配'add'的元素索引,所有'add'都会被定位到同一个位置,插入后列表长度增加,循环基于初始迭代器持续执行,最终陷入无限循环。
  • 存在语法错误:insert的参数格式应为(索引, 元素),此处括号嵌套错误。

第二段代码

for word in list:
    if 'add' in word:
        local = list.index(word) + 1
        if list[local] == 'Nice':
            pass
        else:
            list.insert(local,'Nice')
  • 核心问题依然是list.index(word)始终返回第一个'add'的索引,后续的'add'触发判断时,local指向的还是第一个'add'的下一位,该位置已存在'Nice',因此直接跳过,导致后面的'add'无法被处理。

正确解法

方法一:创建新列表(推荐)

遍历原列表,遇到目标元素时同时添加原元素和指定元素,否则仅添加原元素。这种方法不修改原列表,逻辑简单不易出错。

original_list = ['add', 'add', 'ball', 'cup', 'add']
new_list = []
for item in original_list:
    new_list.append(item)
    if item == 'add':
        new_list.append('Nice')
print(new_list)
# 输出:['add', 'Nice', 'add', 'Nice', 'ball', 'cup', 'add', 'Nice']

方法二:倒序遍历修改原列表

如果必须修改原列表,可采用倒序遍历索引的方式。倒序处理时,插入元素的位置在当前索引之后,不会影响未处理的前面元素的索引,避免遍历混乱。

original_list = ['add', 'add', 'ball', 'cup', 'add']
# 从最后一个索引倒序遍历到0
for i in range(len(original_list)-1, -1, -1):
    if original_list[i] == 'add':
        original_list.insert(i+1, 'Nice')
print(original_list)
# 输出:['add', 'Nice', 'add', 'Nice', 'ball', 'cup', 'add', 'Nice']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:45:32