如何基于索引访问队列元素



我有一个队列

from collections import deque
queue = deque([(1, 2), (5, 7), (3, 9)])

并给出索引。

我的功能如下:

def iterQue(que, index):
    data = []
    for d in que:
        data.append(d[index])
    return data

输出:

index = 0, get [1, 5, 3]

index = 1, get [2, 7, 9]

有什么更好的方法可以修改我的功能?

您可以按以下方式执行:

from collections import deque
queue = deque([(1, 2), (5, 7), (3, 9)])
li = [[] for _ in range(2)]
for item in queue:
    for i in range(2):
        li[i].append(item[i])
print(li)
for idx, item in enumerate(li):
    print('index = {}, get {}'.format(idx, item))

或如下所述的Tobias(谢谢@ToBias_K(

所建议的
from collections import deque
queue = deque([(1, 2), (5, 7), (3, 9)])
li = [ list(item) for item in zip(*queue)]
print(li)
for idx, item in enumerate(li):
    print('index = {}, get {}'.format(idx, item))

在两种情况下,输出看起来如下如下

[[1, 5, 3], [2, 7, 9]]
index = 0, get [1, 5, 3]
index = 1, get [2, 7, 9]

您可以更改功能以使用列表理解:

def iterQue(que, index):
    return [n[index] for n in que]

在这种情况下,应该更有效,如果您确定队列在iterQue调用之后不会更改,则可以返回生成器而不是列表,只需将[n[index] for n in que]更改为(n[index] for n in que)

最新更新