List.extend()无法在Python中按预期工作

时间:2018-09-20 07:20:15

标签: python

我有一个列表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]

出了什么问题?

2 个答案:

答案 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

把那条线拿出来。