HashSet __iter__ Python 3
本问题已经有最佳答案,请猛点这里访问。
你好,我这一周来一直在做一些哈希集问题。最后一个问题要求我为哈希集创建ITER方法。这是我的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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) |
它似乎不起作用,给了我一个错误:type error:iter()返回了类型为"list"的非迭代器。我该返回什么??
输入:
表var中的值是正确的,我用print()语句测试了它。我该怎么修?
您应该返回迭代器或使用
1 2 3 | def __iter__(self): ... return iter(sorted(table)) # creates an iterator from the list |
或
1 2 3 | def __iter__(self): ... yield from sorted(table) # Python 3's generator delegation syntax |