DICT-функция Python на перечисляемом объекте - PullRequest
4 голосов
/ 26 апреля 2010

Если у меня есть объект перечисления x, зачем делать следующее:

dict(x)

очистить все элементы в последовательности перечисления?

1 Ответ

18 голосов
/ 26 апреля 2010

enumerate создает итератор . Итератор - это объект Python, который знает только о текущем элементе последовательности и о том, как получить следующий, но нет способа перезапустить его. Поэтому, если вы используете итератор в цикле, он не может дать вам больше элементов и выглядит пустым.

Если вы хотите создать реальную последовательность из итератора, вы можете вызвать list для нее.

stuff = range(5,0,-1)
it = enumerate(stuff)
print dict(it), dict(it) # first consumes all items, so there are none left for the 2nd call

seq = list(enumerate(stuff)) # creates a list of all the items
print dict(seq), dict(seq) # you can use it as often as you want
...