Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.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:What';set.pop()的用例是什么?_Python - Fatal编程技术网

Python:What';set.pop()的用例是什么?

Python:What';set.pop()的用例是什么?,python,Python,Python内置类型set有一个名为的方法,来自文档: 从集合中删除并返回任意元素。引发关键错误 如果集合为空 我想不出这个特性的任何用例,它似乎是试图实现list接口 为什么这是Python标准的一部分?当您有一个没有特定顺序的作业池要处理时,您会使用它。作业只能执行一次,但执行一次后可以再次添加: jobs = {job1, job2, job3} while jobs: job = jobs.pop() job.process() 其中job.process()。处理完

Python内置类型
set
有一个名为的方法,来自文档:

从集合中删除并返回任意元素。引发关键错误 如果集合为空

我想不出这个特性的任何用例,它似乎是试图实现
list
接口


为什么这是Python标准的一部分?

当您有一个没有特定顺序的作业池要处理时,您会使用它。作业只能执行一次,但执行一次后可以再次添加:

jobs = {job1, job2, job3}

while jobs:
    job = jobs.pop()
    job.process()
其中
job.process()。处理完所有作业后,集合将为空,循环完成

或者,对于一个不那么做作的真实示例,请参见
distlib
库中的(例如由
pip
使用),该库使用
todo
集跟踪仍需要处理的分发提供商

该方法是的镜像,其中明确提到了集合算法:

popitem()
用于在字典上进行破坏性迭代,这在集合算法中经常使用


在将
set
添加到该语言之前,您需要使用带有
None
值的字典来模拟集合。

它实际上是和的镜像。它用于处理需要“下一个”值但不需要顺序的情况。这似乎是一个非常做作的示例。在大多数情况下,似乎不太可能没有更喜欢的订单。此外,您似乎不太可能只想对排队的作业进行重复数据消除。一个更现实的场景可能会有一个挂起的作业队列和一组执行的作业,这样一个作业就不会执行两次。@branks:这并不像你想象的那么牵强。例如,使用的集合与此完全相同。