我试图在doctest中返回类似的输出,但是当调用函数时,我得到了交换项目的次数以及排序列表。
我尝试为空字典创建变量,并尝试将返回的函数包含在其中,但我不知道该怎么做。
def bubbleSort(numList):
num_dict = {}
for j in range(1, len(numList)):
swap_check = False
for i in range(len(numList)-1):
if numList[i] > numList[i + 1]:
numList[i], numList[i + 1] = numList[i + 1], numList[i]
swap_check = True
return numList
if swap_check == False:
break
return j, numList
预期结果: 取得清单并传回2个值 第一个返回值:每次完成冒泡排序之后,具有列表状态的字典 第二个返回值:排序列表
>>> bubbleSort([9,3,5,4,1,67,78])
({1: [3, 5, 4, 1, 9, 67, 78], 2: [3, 4, 1, 5, 9, 67, 78], 3: [3, 1, 4, 5, 9, 67, 78], 4: [1, 3, 4, 5, 9, 67, 78], 5: [1, 3, 4, 5, 9, 67, 78]}, [1, 3, 4, 5, 9, 67, 78])
实际结果:
>>> bubbleSort([9,3,5,4,1,67,78])
(5, [1, 3, 4, 5, 9, 67, 78])
答案 0 :(得分:1)
因此,您获得(5, [1, 3, 4, 5, 9, 67, 78])
作为输出的原因是因为循环j
= 5和[1, 3, 4, 5, 9, 67, 78]
的最后一次是您的排序列表,这就是您从函数返回的列表。 return j, numList
当您遍历列表时,我们可以使用您的num_dict
词典来存储排序算法的结果。
num_dict[j] = num_list[:]
因为我们要对num_list
进行突变,所以当我们将排序结果存储在num_dict
中时,我会复制列表。 num_list[:]
仅返回num_list
的副本。
它在完成的功能中:
def bubble_sort(num_list):
num_dict = {}
for j in range(1, len(num_list)):
swap_check = False
for i in range(len(num_list)-1):
if num_list[i] > num_list[i + 1]:
num_list[i], num_list[i + 1] = num_list[i + 1], num_list[i]
swap_check = True
# store result of sort iteration
num_dict[j] = num_list[:]
if swap_check == False:
break
return num_dict, num_list
现在我们在运行bubble_sort
函数时得到了这个信息:
>>> bubble_sort([9,3,5,4,1,67,78])
({1: [3, 5, 4, 1, 9, 67, 78],
2: [3, 4, 1, 5, 9, 67, 78],
3: [3, 1, 4, 5, 9, 67, 78],
4: [1, 3, 4, 5, 9, 67, 78],
5: [1, 3, 4, 5, 9, 67, 78]},
[1, 3, 4, 5, 9, 67, 78])