冒泡排序列表排序 Returns None In Python
Bubble Sorting List Sorting Returns None In Python
我正在尝试了解冒泡排序算法在 python 中的工作原理。
但是,当我打印输出时,对列表 returns None
进行排序。
这是我的代码
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+1]
nums[j+1] = temp
_sorted = _sort(arr)
print(_sorted)
这是我打印出来的结果。
None
您忘记包含 return 个数字。
你还没有 return编辑任何东西..ie return nums
您没有指定函数 return,因此它只是 returns None
。
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+1]
nums[j+1] = temp
return nums
这应该可以解决问题。
只是为了完整性:
- 除了 return 任何东西,您还应该能够在函数调用后再次访问
arr
。
- 你的算法还有一些基本错误
第一,算法不对。你应该这样做:
def _sort(nums):
for i in range(len(nums)-1, 0, -1):
for j in range(i):
if nums[j] > nums[i]:
temp = nums[i]
nums[i] = nums[j]
nums[j] = temp
其次,函数没有return任何东西。这就是为什么 returns None
。但是,列表 arr
现在已排序。您可以通过 运行 此代码进行检查:
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[i]:
temp = nums[i]
nums[i] = nums[j]
nums[j] = temp
_sort(arr) # This function does not return anything
print(arr)
您的 _sort
函数尝试“就地”对您的数组进行排序,这意味着它直接对给定数组进行操作而不创建新数组。因此,该功能不需要 return 任何东西,而您的功能确实不需要。所以通过写 _sorted = _sort(arr)
,变量 _sorted
被分配给 None
因为 _sort
没有 return 任何东西。如果您改为编写以下内容,
# _sorted = _sort(arr)
_sort(arr)
print(arr)
您应该会看到您的数组已被修改。
我正在尝试了解冒泡排序算法在 python 中的工作原理。
但是,当我打印输出时,对列表 returns None
进行排序。
这是我的代码
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+1]
nums[j+1] = temp
_sorted = _sort(arr)
print(_sorted)
这是我打印出来的结果。
None
您忘记包含 return 个数字。
你还没有 return编辑任何东西..ie return nums
您没有指定函数 return,因此它只是 returns None
。
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+1]
nums[j+1] = temp
return nums
这应该可以解决问题。 只是为了完整性:
- 除了 return 任何东西,您还应该能够在函数调用后再次访问
arr
。 - 你的算法还有一些基本错误
第一,算法不对。你应该这样做:
def _sort(nums):
for i in range(len(nums)-1, 0, -1):
for j in range(i):
if nums[j] > nums[i]:
temp = nums[i]
nums[i] = nums[j]
nums[j] = temp
其次,函数没有return任何东西。这就是为什么 returns None
。但是,列表 arr
现在已排序。您可以通过 运行 此代码进行检查:
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[i]:
temp = nums[i]
nums[i] = nums[j]
nums[j] = temp
_sort(arr) # This function does not return anything
print(arr)
您的 _sort
函数尝试“就地”对您的数组进行排序,这意味着它直接对给定数组进行操作而不创建新数组。因此,该功能不需要 return 任何东西,而您的功能确实不需要。所以通过写 _sorted = _sort(arr)
,变量 _sorted
被分配给 None
因为 _sort
没有 return 任何东西。如果您改为编写以下内容,
# _sorted = _sort(arr)
_sort(arr)
print(arr)
您应该会看到您的数组已被修改。