为什么我必须将namedtuples的python双端队列实例化为列表?

问题描述 投票:0回答:1

我有一个节点队列,需要对它们进行上下限限制,所以我有一个名为QueueEntry的命名元组。

QueueEntry = collections.namedtuple('QueueEntry', ('node', 'lower', 'upper'))

当我用列表中的命名元组实例化双端队列时:

bfs_queue = collections.deque([QueueEntry(node, float('-inf'), float('inf'))])

而不是:

bfs_queue = collections.deque(QueueEntry(node, float('-inf'), float('inf')))
python namedtuple python-collections
1个回答
0
投票

deque的输入是iterable,因此任何可迭代的数据结构都足够:列表,元组,集合,字典等。

或者,您可以使用append()appendleft()方法直接附加对象:

QueueEntry = collections.namedtuple('QueueEntry', ('node', 'lower', 'upper'))
bfs_queue = collections.deque()
bfs_queue.append(QueueEntry(node, float('-inf'), float('inf')))
bfs_queue.append(QueueEntry(another_node, 0, 0))

希望这会有所帮助:-)

© www.soinside.com 2019 - 2024. All rights reserved.