未引用的局部变量?但我可以将它打印好

时间:2013-06-17 10:31:34

标签: python slice

对于我的生活,我不明白为什么会出现这个错误:

UnboundLocalError: local variable 'unsorted' referenced before assignment (while len(unsorted) > 0)

对于这段代码,我也知道它不是选择排序的最佳实现:

def selection_sort(arr):
    unsorted = arr[:]
    sorted_arr = []
    while len(unsorted) > 0:
        lowest = arr[0]
        lowest_index = 0
        for i in range(len(unsorted)):
            if arr[i] < lowest:
                lowest = arr[i]
                lowest_index = i

        sorted_arr.append(lowest)
        del(unsorted, lowest_index)
    return sorted_arr

2 个答案:

答案 0 :(得分:7)

您收到此错误的原因是:

del(unsorted, lowest_index)

删除两个变量unsortedlowest_index,然后在下一个循环回合中,您尝试再次使用它们。

答案 1 :(得分:0)

del (unsorted, lowest_index)删除unsorted和lowest_index。如果您尝试删除未排序的元素lowest_index do:

del unsorted[lowest_index]