Python列表数值减半函数问题:如何适配任意输入列表?
问题分析与代码修正
你的代码存在几个关键错误,导致无法实现“将列表中数值改为原来一半”的功能,同时也没满足适配任意列表的需求:
- 循环操作对象错误:你在循环里修改的是
index变量(也就是循环的索引值),而不是列表a中的对应元素。正确的做法应该是通过索引访问列表元素并修改,比如a[index] /= 2。 - 返回值错误:函数最后返回的是修改后的
index,这完全不是你需要的处理后的列表,应该返回修改后的a。 - 关于“适配任意列表”:函数本身已经设计成接收参数
a,所以不需要在代码开头固定定义a,只要在调用函数时传入任意列表即可,比如halve_values([1,4,5,6,8,13])。
修正后的代码
def halve_values(a): for index in range(len(a)): # 修改列表对应索引的元素,而非索引本身 a[index] /= 2 # 返回处理后的列表 return a # 调用时可传入任意列表,无需提前固定定义 print(halve_values([1, 2, 3])) print(halve_values([1, 4, 5, 6, 8, 13]))
另外,也可以用更简洁的列表推导式实现,这种方式会返回新列表,不会修改原列表:
def halve_values(a): return [num / 2 for num in a]
内容的提问来源于stack exchange,提问作者Marcos
相关产品推荐
相关产品推荐

