如何定义接收列表的func2并调用func1完成列表排序
问题修正说明
你要实现的是逐个把待排序列表的元素插入已有序的out列表,靠已实现的func1完成插入后的排序,原有代码存在3个核心问题:
- 循环变量使用错误:
for i in list2遍历列表时,i直接就是list2中的每一个元素,不需要额外用mylist[i]取值,且代码中未定义mylist变量 - 代码缩进错误:
func1的调用语句需要缩进,放在for循环的代码块内,才能每次循环都执行 - 缺少返回值:
func2处理完成后没有返回最终的有序列表out,外部调用无法拿到结果
修正后代码
# 你已实现的func1,功能为将x加入list1后重新排序,直接修改传入的列表对象即可 def func1(x, list1): # 这里是你已有的排序逻辑,示例实现如下: list1.append(x) list1.sort() def func2(list2): out = [] # 直接遍历list2的每个元素 for num in list2: # 把当前元素和out列表传给func1处理 func1(num, out) # 处理完成后返回有序列表 return out
执行效果验证
调用func2([4,2,3,1])就会返回[1,2,3,4],完全符合你预期的执行逻辑:
- 第一次传入4,out变为
[4] - 第二次传入2,func1处理后out变为
[2,4] - 第三次传入3,处理后out变为
[2,3,4] - 第四次传入1,处理后得到最终结果
[1,2,3,4]
内容的提问来源于stack exchange,提问作者Dojje
相关产品推荐
相关产品推荐

