2024-04-18 03:56:52 发布
网友
def lst_comp(): list = [] list = (2**i for i in range(100)) print list return list
当我这样做的时候我得到了:<generator object <genexpr> at 0x00000000034C48B8>
<generator object <genexpr> at 0x00000000034C48B8>
您的问题来自这样一个事实:您使用了生成器理解(...),而不是列表理解[...]。你知道吗
(...)
[...]
def lst_comp(): myList = [2**i for i in range(100)] return myList
顺便说一下,将变量命名为list、file、dict等是一个可怕的想法,因为它们是python中的数据结构类型
list
file
dict
您创建了一个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)
一次性使用整个生成器对象,并根据结果生成列表对象。你知道吗
您的问题来自这样一个事实:您使用了生成器理解
(...)
,而不是列表理解[...]
。你知道吗顺便说一下,将变量命名为
list
、file
、dict
等是一个可怕的想法,因为它们是python中的数据结构类型您创建了一个generator expression,而不是一个列表。在表达式周围使用
[...]
方括号,而不是(...)
圆括号:生成器表达式与列表理解密切相关;它生成完全相同的值,但在对象上迭代时会延迟。列表理解一次性生成所有值并返回包含这些值的列表对象。你知道吗
你也可以这样做:
一次性使用整个生成器对象,并根据结果生成列表对象。你知道吗
相关问题 更多 >
编程相关推荐