def lst_comp():
list = []
list = (2**i for i in range(100))
print list
return list
当我这样做时,我得到了这个:<generator object <genexpr> at 0x00000000034C48B8>
答案 0 :(得分:7)
您创建了generator expression,不列表理解。在表达式周围使用[...]
方括号而不是(...)
圆括号:
def lst_comp():
lst = [2**i for i in range(100)]
print lst
return lst
生成器表达式与列表理解密切相关;它产生完全相同的值,但在迭代对象时懒得。列表推导一次生成所有值,并返回包含它们的列表对象。
你也可以做到:
generator = (2**i for i in range(100))
lst = list(generator)
一次性使用整个生成器对象,并从结果中生成一个列表对象。
答案 1 :(得分:3)
您的问题来自于您使用生成器理解(...)
而不是列表理解[...]
。
def lst_comp():
myList = [2**i for i in range(100)]
return myList
作为旁注,为变量list
,file
,dict
等命名是一个可怕的想法,因为它们是python中的数据结构类型