我有两个问题:
1)最近我正在尝试建立一个最大堆。即使我阅读了CLRS,我在运行它时也找不到错误。以下是我的代码...
def maxHeapify(list, index):
int = index
left = (int+1) * 2 - 1
right = (int+1) * 2
largest = 0
if left < len(list):
if (left <= len(list)) & (list[left] >= list[int]):
largest = left
else:
largest = int
if right < len(list):
if (right <= len(list)) & (list[right] >= list[largest]):
largest = right
else:
pass
if largest != int:
listNew = swapWithinList(list, int, largest)
listNew = maxHeapify(listNew, largest)
else:
return listNew
def swapWithinList(list, id1, id2):
num1 = list[id1]
num2 = list[id2]
listNew = list[:id1]
listNew.append(num2)
listNew = listNew + list[(id1+1):id2]
listNew.append(num1)
listNew = listNew + list[(id2+1):]
return listNew
我提供输入,但控制台只是说:
UnboundLocalError: local variable 'listNew' referenced before assignment
这是否意味着我将 return 语句放在错误的行上或者我没有提到的东西?
2)什么是迭代?
当我问这个问题时,我有点尴尬。但什么是迭代?维基说这个过程的每次重复都意味着它,那么它是循环给每一轮的结果吗?
而迭代器似乎是Python中的一个基本元素,迭代器和迭代有什么区别?