为什么在python中执行下面的代码给出<type'generator'=“”> type?

时间:2017-04-24 19:59:38

标签: python

为什么在python中执行下面的代码会给出'generator'类型?

dic= ((I, (I**3)) for I in range(25))

print type(dic)

输出:

有人能解释我吗?

2 个答案:

答案 0 :(得分:1)

如果您要生成大量数据,但一次只需要一个,那么您可以使用生成器,就像在代码中一样

dic= ((I, (I**3)) for I in range(25))
# type of dic is a generator

但是如果你想在内存中以列表的形式存储所有数据而不是使用prenthesis,请使用括号。

dic= [(I, (I**3)) for I in range(25)]
# type of dic is list
  

结果:[(0,0),(1,1),(2,8),(3,27),(4,64),(5,125),(6,216),(7 ,343),(8,512),(9,729),(10,1000),(11,1331),(12,1728),(13,2197),(14,2744),(15,3375) ),(16,4096),(17,4913),(18,5832),(19,6859),(20,8000),(21,9261),(22,10648),(23,12167), (24,13824)]

答案 1 :(得分:0)

结果类型由周围的括号定义:

>>> dic = ((I, (I**3)) for I in range(25))
>>> type(dic)
<class 'generator'>

>>> dic = [(I, (I**3)) for I in range(25)]
>>> type(dic)
<class 'list'>

>>> dic = {I: (I**3) for I in range(25)}
>>> type(dic)
<class 'dict'>