List.extend () не работает должным образом в Python [duplicate]

1

У меня есть 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
    попробуйте: queue.extend(list(neighbor))
  • 0
    Это не работает
Теги:

2 ответа

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)
  • 2
    Или просто queue.extend(neighbors) будет хорошо
  • 1
    Удивительно! Такая минутная ошибка. Большое спасибо.
3

Вы уже использовали итератор:

print(list(neighbor))

Возьмите эту линию.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню