我有一个队列
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)
。