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

Python实现:为列表中不含'7'的字符串末尾添加'7'

问题解决:为不含'7'的字符串末尾添加'7'

问题描述

给定一个字符串列表,需要为其中不含字符'7'的字符串末尾添加'7'。例如输入['a7', 'g', 'u'],期望输出['a7','g7','u7'],但原代码运行后得到['a7', 'g', 'u', ['a77', 'g7', 'u7']],无法正确替换原列表中的旧值。

原代码问题分析

  • 循环逻辑错误:遍历列表时,只要遇到第一个不含'7'的元素,就生成**所有元素都加'7'**的新列表,再用append把这个新列表作为元素插入原列表并直接返回,导致原列表被嵌套修改,还错误地给已有'7'的字符串重复加'7'(比如'a7'变成'a77')。
  • 修改方式错误:append是往列表末尾添加新元素,不是替换原有元素,无法实现更新原列表项的需求。
  • 默认参数隐患:Python中可变默认参数list=[]会在多次调用时复用同一个列表,引发意外问题。

修正方案

方案1:返回新列表(推荐,不修改原输入)

这种方式生成符合要求的新列表,不会改动原输入列表,逻辑清晰且安全:

class Solution(object):
    def jazz(self, lst=None):
        # 修复可变默认参数问题
        if lst is None:
            lst = []
        # 列表推导式逐个处理元素
        return [s + '7' if '7' not in s else s for s in lst]

方案2:原地修改原列表

如果需要直接修改原输入列表,可以遍历索引替换对应元素:

class Solution(object):
    def jazz(self, lst=None):
        if lst is None:
            lst = []
        # 遍历索引,替换不符合要求的元素
        for i in range(len(lst)):
            if '7' not in lst[i]:
                lst[i] = lst[i] + '7'
        return lst

测试代码

if __name__ == "__main__":
    p = Solution()
    lt = ['a7', 'g', 'u']
    print(p.jazz(lt))  # 输出 ['a7', 'g7', 'u7']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:05:41