python dict function on enumerate object

前端 未结 1 1409
陌清茗
陌清茗 2021-01-18 16:35

If I have an enumerate object x, why does doing the following:

dict(x)

clear all the items in the enumerate sequence?

1条回答
  •  陌清茗
    陌清茗 (楼主)
    2021-01-18 17:28

    enumerate creates an iterator. A iterator is a python object that only knows about the current item of a sequence and how to get the next, but there is no way to restart it. Therefore, once you have used a iterator in a loop, it cannot give you any more items and appears to be empty.

    If you want to create a real sequence from a iterator you can call list on it.

    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
    

    0 讨论(0)
提交回复
热议问题