【问题标题】:list-comprehensions problem in python - list dispear after run once [duplicate]python中的列表理解问题-运行一次后列表消失[重复]
【发布时间】:2021-07-20 18:23:48
【问题描述】:

我尝试使用列表理解,请参阅此处的链接: https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions

但它创建生成器而不是返回列表

当我尝试将其转换为列表时-它只工作一次,然后列表消失

 values=[3,"fasdf",99]

 vv=(str(x) for x in values)

 vv

<generator object <genexpr> at 0x047D2F08>
 list(vv)

['3', 'fasdf', '99']

 list(vv)

[]

values


[3, 'fasdf', 99]

【问题讨论】:

  • 是的,生成器只能使用一次。制作一个列表来存储值,以便它们可以多次使用
  • 跟进@mousetail,() 中的理解将返回generator。如果您只想要最后的列表而不需要生成器,请使用方括号:[str(x) for x in values]。我建议您阅读有关生成器的更多信息here
  • 感谢您的建议。我不知道 () 是一个生成器。

标签: python python-3.x


【解决方案1】:

(str(x) for x in values) 不是列表推导式,而是生成器表达式。

另一方面,[str(x) for x in values] 是一个列表推导式。

第一个表达式创建了一个一次性生成器,在您遍历它的那一刻就会耗尽。第二个表达式将该迭代的结果放入列表中,因此您可以再次访问元素。

【讨论】:

    猜你喜欢
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 2013-01-26
    • 2018-04-20
    • 1970-01-01
    • 2019-08-13
    • 2016-08-07
    相关资源
    最近更新 更多