You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现冒泡排序对列表排序后返回None问题求解

问题排查与修复

问题1:返回None的直接原因

Python函数如果没有显式声明return返回值,默认会返回None。你的_sort函数没有写任何返回逻辑,所以赋值给_sorted的结果自然就是None。

问题2:冒泡排序逻辑错误

你写的元素交换代码不完整,仅修改了nums[j+1]的值,没有给nums[j]赋值,就算加了返回值也无法完成排序:

# 错误的交换逻辑
if nums[j] > nums[j+1]:
    temp = nums[j+1]
    nums[j+1] = temp

正确的交换逻辑应该是把nums[j]和nums[j+1]的值互换。

修复方案

方案1:使用原地修改逻辑(和Python内置list.sort()行为一致)

不需要接收返回值,排序后直接打印原数组即可:

arr = ["A", "B", "C", "D", "Z", "Y"]

def _sort(nums):
    for i in range(len(nums)-1, 0, -1):
        for j in range(i):
            if nums[j] > nums[j+1]:
                # 完整交换两个元素
                temp = nums[j]
                nums[j] = nums[j+1]
                nums[j+1] = temp

_sort(arr)
print(arr)
# 输出结果:['A', 'B', 'C', 'D', 'Y', 'Z']

方案2:给函数加返回值

如果需要保留原数组不变,返回新的排序后数组,可以先拷贝传入的列表再操作,最后返回结果:

arr = ["A", "B", "C", "D", "Z", "Y"]

def _sort(nums):
    # 拷贝原数组,不修改原值
    sorted_nums = nums.copy()
    for i in range(len(sorted_nums)-1, 0, -1):
        for j in range(i):
            if sorted_nums[j] > sorted_nums[j+1]:
                sorted_nums[j], sorted_nums[j+1] = sorted_nums[j+1], sorted_nums[j]
    # 显式返回排序后的数组
    return sorted_nums

_sorted = _sort(arr)
print(_sorted)
# 输出结果:['A', 'B', 'C', 'D', 'Y', 'Z']

内容的提问来源于stack exchange,提问作者Freduah Gideon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 21:36:07