我有一个代码,该代码生成一个数字列表,然后对其进行排序。排序功能有效,但我需要在排序后打印未排序的列表。这就是为什么我使用打印功能来打印未排序的内容,而是打印已排序的列表的原因。我以为我通过将未排序列表分配给变量来存储未排序列表,然后尝试最后打印出来。有什么想法为什么要打印排序列表而不是未排序列表?我没有放置GenerateNumbers()函数,因为这样做是给“ numbers”变量一个未排序数字的列表。我正在使用插入排序。
def InsertionSort(sort_list):
print("Sorting numbers...")
for i in range(0, len(sort_list)-1):
for j in range(i+1,0,-1):
if(sort_list[j] < sort_list[j-1]):
temp = sort_list[j-1]
sort_list[j-1] = sort_list[j]
sort_list[j] = temp
print(sort_list)
else:
break
print("Finished sorting.")
print()
return sort_list
numbers = GenerateNumbers()
unsorted = numbers
sort_list = numbers
sorted_numbers = InsertionSort(sort_list)
print("unsorted list:", numbers)
print("sorted list:", sorted_numbers)
打电话时
unsorted = numbers
sort_list = numbers
您实际上并没有复制列表,只是将引用复制到列表。unsorder
并且sort_list
都指向在内存中的同一列表。
要复制列表,您可以执行以下操作:
sort_list = list(numbers)
现在sort_list指向内存中的新列表,您可以更改sort_list
而不更改numbers
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句