【发布时间】:2018-04-19 16:55:53
【问题描述】:
您好,过去一周左右我一直在做一些 HashSet 问题。最后一个问题要求我为我的 HashSet 创建 iter 方法。这是我的代码:
class HashSet:
def __init__(self, capacity=10):
self.table = [None] * capacity
def add(self, item):
h = hash(item)
index = h % len(self.table)
if self.table[index] == None:
self.table[index] = LinkedList()
if item not in self.table[index]:
self.table[index].add(item)
def __iter__(self):
table = []
ptr = None
for i in range(0, len(self.table)):
if self.table[i]:
ptr = self.table[i].head
while ptr != None:
table.append(ptr.item)
ptr = ptr.next
return sorted(table)
它似乎不起作用,它给了我一个错误:TypeError:iter() 返回了“list”类型的非迭代器。我应该返回什么??
输入:7 20 30 40 50 60 70 80 90
所需输出:[20, 30, 40, 50, 60, 70, 80, 90]
table var 中的值是正确的,我使用 print() 语句进行了测试。我该如何解决?
【问题讨论】:
标签: python hash hashtable hashset