使用列表理解找到2从2^0到2^99的幂

2024-04-18 03:56:52 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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


Tags: inforreturnobjectdefrangegeneratorat
2条回答

您的问题来自这样一个事实:您使用了生成器理解(...),而不是列表理解[...]。你知道吗

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

顺便说一下,将变量命名为listfiledict等是一个可怕的想法,因为它们是python中的数据结构类型

您创建了一个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)

一次性使用整个生成器对象,并根据结果生成列表对象。你知道吗

相关问题 更多 >