Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python(2.7)队列重复_Python_Queue_Duplicates - Fatal编程技术网

Python(2.7)队列重复

Python(2.7)队列重复,python,queue,duplicates,Python,Queue,Duplicates,我正在尝试为一个简单的web爬虫创建一个包含url字符串的队列。我不想将重复的项目添加到队列中,因此我创建了一个helper函数来检查要添加到队列中的url,并查看它是否已经在队列中。我试图使用此代码(我从类似的stackoverflow问题中修改了此代码),pages是队列: def is_in_url_list(self, url): return url in self.pages.queue 然而,我似乎无法让它发挥作用。即使我传递了应该返回true的内容,它也会返回false

我正在尝试为一个简单的web爬虫创建一个包含url字符串的队列。我不想将重复的项目添加到队列中,因此我创建了一个helper函数来检查要添加到队列中的url,并查看它是否已经在队列中。我试图使用此代码(我从类似的stackoverflow问题中修改了此代码),pages是队列:

def is_in_url_list(self, url):
    return url in self.pages.queue

然而,我似乎无法让它发挥作用。即使我传递了应该返回true的内容,它也会返回false。有没有更好的办法?谢谢

出于您的目的,使用
队列
没有任何意义,相反,您可以只使用正常的
列表
,也可以使用。如果您好奇的话,
队列
用于多处理,因为它提供了线程安全的数据结构,不同的线程可以使用它进行通信(如果这听起来像胡言乱语,请忽略它)

因为您描述的问题是一个常见的问题,所以我提供的链接实际上展示了如何使用列表作为堆栈和队列

现在,
deque
是一个双端队列,因此是
d
。这可以从两端弹出,必要时成为堆栈,必要时成为队列

现在,您可能想知道,如果
deque
list
可以获得相同的结果,为什么要使用一个而不是另一个,文档中也解释了这一点:

虽然列表对象支持类似的操作,但它们针对 快速的定长操作,并为 pop(0)和insert(0,v)操作可更改大小和大小 基础数据表示的位置


现在由您选择。

您所说的队列是什么类型的?我使用的是队列模块(),因此我假设它是标准的FIFO队列。这非常有用,谢谢!我对python相当陌生,我没有意识到deque是正确的选择。它现在工作得很好。