Python数组分区问题替代方案实现求助:如何返回smaller数组最终值
代码调整方案
第一步:修复当前smaller数组输出问题
你现在出现的中间结果重复打印问题,是因为print(smaller)放在了循环内的append操作后,每匹配到一个符合条件的元素追加后就会执行一次打印。调整逻辑如下:
- 将
print语句挪到for循环结束之后 - 给函数增加
return语句返回最终的smaller数组
当前阶段修正后代码:
def properArray(pivot_index, A): pivot = A[pivot_index] smaller = [] for i in range(len(A)): if A[i] < pivot: smaller.append(A[i]) # 循环结束后再打印/返回最终结果 print(smaller) return smaller resized_array = properArray resized_array(3, [1,5,6,9,3,4,6])
运行后只会输出一次最终的smaller结果:[1, 5, 6, 3, 4, 6](示例中pivot是A[3]=9,所有元素都小于它)。
第二步:补全完整的重排逻辑
按照你规划的三子数组思路,后续可以补充equal、greater两个数组,最终拼接返回符合题目要求的完整结果即可,完整实现代码如下:
def properArray(pivot_index, A): pivot = A[pivot_index] smaller = [] equal = [] greater = [] for num in A: if num < pivot: smaller.append(num) elif num == pivot: equal.append(num) else: greater.append(num) # 拼接三个子数组返回最终结果 result = smaller + equal + greater print(result) return result resized_array = properArray resized_array(3, [1,5,6,9,3,4,6])
运行输出完整重排后的数组:[1, 5, 6, 3, 4, 6, 9]
内容的提问来源于stack exchange,提问作者Don_de.coder
相关产品推荐
相关产品推荐

