我有一个队列
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]
有没有更好的方法来修改我的功能?
答案 0 :(得分:1)
您可以将函数更改为使用列表理解,例如:
def iterQue(que, index):
return [n[index] for n in que]
在这种情况下,它应该更有效,如果您确定在iterQue
调用之后队列没有改变,则可以返回生成器而不是列表,只需将[n[index] for n in que]
更改为{ {1}}。
答案 1 :(得分:1)
您可以执行以下操作:
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]