我有一个列表queue
和一个迭代器对象neighbors
,我想要将其元素附加到列表中。
queue = [1]
neighbor = T.neighbors(1) #neighbor is a <dict_keyiterator at 0x16843d03368>
print(list(neighbor)) #Output: [2, 3]
queue.extend([n for n in neighbor])
print(queue)
输出:
[1]
预期输出:
[1, 2, 3]
出了什么问题?
答案 0 :(得分:4)
在neighbor
构造函数中使用迭代器list
进行打印时,您已经用尽了它,因此在下一行的列表理解中它变为空。
将转换后的列表存储在变量中,以便您既可以打印它,也可以在列表理解中使用它:
queue = [1]
neighbor = T.neighbors(1) #neighbor is a <dict_keyiterator at 0x16843d03368>
neighbors = list(neighbor)
print(neighbors) #Output: [2, 3]
queue.extend([n for n in neighbors])
print(queue)
答案 1 :(得分:3)
您已经消耗了迭代器:
OperableOther
把那条线拿出来。