将多个项目放入 python 队列

Put multiple items in a python queue

假设您有一个可迭代对象 items,其中包含应放入队列 q 的项目。 当然你也可以这样做:

for i in items:
    q.put(i)

但是感觉没必要写成两行-那应该是pythonic吗? 有没有办法做一些更具可读性的事情——比如像这样

q.put(*items)

使用内置的map函数:

map(q.put, items)

它将 q.put 应用到您列表中的所有项目。有用的一行。


对于Python3,您可以按如下方式使用:

list(map(q.put, items))

或者:

from collections import deque
deque(map(q.put, items))

但在这一点上,for 循环更具可读性。

这有什么不可读的?

for i in items:
    q.put(i)

可读性与"short"不一样,一行不一定更可读;很多时候恰恰相反。

如果你想要一个 q.put(*items)-like API,考虑制作一个简短的辅助函数,或者子类化 Queue.

q.extend(items)

要简单Pythonic就够了

如果你想排在队列的前面

q.extendleft(items)

Python 文档:

https://docs.python.org/2/library/collections.html#collections.deque.extend