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

2024-04-24 13:42:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我要排队

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]

有没有更好的方法来修改我的函数?你知道吗


Tags: infromimportfordatagetindexqueue
2条回答

您可以执行以下操作:

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\u 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)。你知道吗

相关问题 更多 >