Python函数返回新列表但原变量未更新的问题解决
问题原因与解决办法
你的函数逻辑没问题,能生成修正后的新列表,但调用函数时没把返回值赋值给原变量,所以原列表values1、values2完全没被更新——函数返回的新列表没地方存,直接被丢弃了。
解决方法一:接收返回值替换原变量
修改调用代码,把函数返回的新列表重新赋值给原变量:
def fixNumbers(lst): # 别用list当参数名,会覆盖Python内置的list类型 newList = [] for i in lst: if i > 255: newList.append(225) elif i < 0: newList.append(0) else: newList.append(i) return newList values1 = [-10, 100, 300] values1 = fixNumbers(values1) # 关键:把返回的新列表赋值给原变量 print(values1) # 输出:[0, 100, 225] values2 = [127, 216, 280, 250, 50, 0, -3, 20] values2 = fixNumbers(values2) print(values2) # 输出:[127, 216, 225, 250, 50, 0, 0, 20]
解决方法二:原地修改原列表(无需返回新列表)
如果不想创建新列表,直接修改传入的原列表内容,可以调整函数逻辑:
def fixNumbers(lst): for idx, num in enumerate(lst): if num > 255: lst[idx] = 225 elif num < 0: lst[idx] = 0 # 不需要return,因为是直接修改原列表的元素 values1 = [-10, 100, 300] fixNumbers(values1) print(values1) # 直接输出修正后的结果:[0, 100, 225]
注意:永远别用list作为变量/参数名,这会覆盖Python自带的list类型,导致后续无法正常使用list()创建新列表。
内容的提问来源于stack exchange,提问作者user23621114
相关产品推荐
相关产品推荐

