假设您有一个可迭代items
,其中包含应放入队列q
的项目。
当然你可以这样做:
for i in items:
q.put(i)
但感觉不必将它写成两行 - 那应该是pythonic吗? 没有办法做更具可读性的事情 - 比如像这样
q.put(*items)
答案 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
创建子类。