使用列表推导从2 ^ 0到2 ^ 99找到2的幂

时间:2014-01-28 21:34:22

标签: python python-2.7 list-comprehension

def lst_comp():
    list = []
    list = (2**i for i in range(100))
    print list
    return list

当我这样做时,我得到了这个:<generator object <genexpr> at 0x00000000034C48B8>

2 个答案:

答案 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

作为旁注,为变量listfiledict等命名是一个可怕的想法,因为它们是python中的数据结构类型