将多个项放在python队列中

时间:2015-08-13 11:41:11

标签: python queue

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

for i in items:
    q.put(i)

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

q.put(*items)

3 个答案:

答案 0 :(得分:10)

使用内置的map功能:

map(q.put, items)

它会将q.put应用于您列表中的所有商品。有用的单行。

对于Python 3,您可以按如下方式使用它:

list(map(q.put, items))

或者:

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

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

答案 1 :(得分:1)

q.extend(items)

应该简单而且Pythonic够了

如果你想要它在队列的前面

q.extendleft(items)

Python文档:

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

答案 2 :(得分:0)

那是什么不可读的?

for i in items:
    q.put(i)

可读性与"短"不同,并且单行不一定更具可读性;通常情况恰恰相反。

如果您想拥有类似q.put(*items)的API,请考虑制作一个简短的帮助函数,或者为Queue创建子类。