Python实现从列表提取负数并单行返回的get_neg函数
问题说明
需要实现get_neg(lst)函数,传入列表lst = [-1, -2, -3, 4, 5, 6]时,返回格式为"-1, -2, -3"的字符串。
初始代码存在三个问题:
- 函数没有定义接收列表的形参,无法正常传入参数
- 循环内每次调用
print()都会默认在输出末尾加换行符,导致每个负数单独占一行 - 直接给每个匹配到的负数后面拼接逗号,最终结果末尾会多出多余的逗号
初始代码如下:
def get_neg(): for n in lst: if n < 0: print(str(n) + ',') else: pass
要求仅使用Python基础语法实现,不依赖额外第三方库。
实现方案
方案1:收集元素后统一拼接(简洁基础实现)
先把所有小于0的元素转成字符串存到临时列表,再用固定分隔符拼接成最终字符串,从根源避免末尾逗号和换行问题:
def get_neg(lst): neg_items = [] for num in lst: if num < 0: neg_items.append(str(num)) return ', '.join(neg_items)
测试运行:
test_lst = [-1, -2, -3, 4, 5, 6] print(get_neg(test_lst)) # 输出:-1, -2, -3
方案2:纯字符串逐次拼接(无列表方法的基础写法)
如果要完全靠循环和字符串拼接实现,可以加标记位判断当前是不是第一个匹配到的负数,控制逗号的拼接逻辑:
def get_neg(lst): result = "" first_flag = True for num in lst: if num < 0: if first_flag: result += str(num) first_flag = False else: result += ", " + str(num) return result
两种方案都满足要求:返回值是目标格式的单行字符串,没有多余换行,末尾没有多余逗号,全程只用到Python最基础的循环、判断、字符串/列表操作。
内容的提问来源于stack exchange,提问作者BAbabo
相关产品推荐
相关产品推荐

