for link in frontLinks:
#try:
getCurlink = self.getHref(link) # get current site links
#print getCurlink
#print frontLinks
if getCurlink:
frontLinks = frontLinks + getCurlink
from collections import deque
done = []
todo = deque(frontLinks) # your initial frontLinks
while todo:
link = todo.popleft() # take the first element from todo
getCurlink = self.getHref(link) # get current site links
if getCurlink:
todo.extend(getCurlink) # extend the todo list
done.append(link)
迭代列表时不会看到列表中的更改。在
您需要使用类似于:
for循环对其表达式求值一次,以获得迭代器。稍后,将名称
frontLinks
重新绑定为新列表。新列表与for循环没有任何关系。在虽然在迭代列表的同时修改列表是很困难的,但是可以添加到列表的末尾,这样就可以了。将最后一行改为:
虽然您可以在迭代时追加到列表,但我将使用一个list和一个deque(您可以使用list代替deque,只需将
todo.popleft()
替换为todo.pop(0)
):这样,您总是有两个具有明确角色的集合:}。您可以停止/恢复迭代、转储/加载当前状态等,而不必重新启动整个过程。在
todo
和{相关问题 更多 >
编程相关推荐