【发布时间】:2017-12-15 05:43:27
【问题描述】:
我有一个代码可以生成一个数字列表,然后对其进行排序。排序功能有效,但我需要在排序后打印未排序的列表。这就是为什么我使用 print 函数来打印未排序的,而是打印已排序的列表。我以为我通过将未排序列表分配给变量来存储未排序列表,然后尝试在最后打印它。任何想法为什么它打印排序列表而不是未排序列表?我没有放置 GenerateNumbers() 函数,因为它的作用是给“数字”变量一个未排序数字的列表。我正在使用插入排序。
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)
【问题讨论】:
-
您的三个变量
numbers、unsorted和sort_list都指向同一个列表,然后您就地对其进行排序。一种可能性是使用unsorted = numbers[:],它会制作一个副本,而不是将相同的列表分配给unsorted
标签: python list sorting random printing