【问题标题】:how to use multiple generator expressions to init single list如何使用多个生成器表达式来初始化单个列表
【发布时间】:2017-03-05 15:06:13
【问题描述】:

我正在尝试使用多个生成器表达式来初始化一个列表。以下代码显示了我最终得到的结果,但我不确定这是“正确”的方式。你打算如何使用多个表达式?

z = [ *(x for x in range(4)), *(y for y in range(5))]

注意:在我的真实代码中,表达式比范围更复杂,所以请不要试图对上面的实际值变得聪明。我确实需要多个生成器表达式

【问题讨论】:

  • 是什么让您认为这不是正确的方法?是否有您要解决的问题
  • 乔恩说了什么。但是如果你真的不需要这个列表,或者想兼容旧版本的 Python,看看itertools.chain
  • 我是 python 新手。仍在寻找 python 做事的方式(我写的太多东西看起来像 C 代码)。目前我不关心旧版本的python。带有 () 的 * 让我觉得我在强迫一些可以做得更干净的事情。
  • 如果你想要一个列表,你还不如添加两个列表推导(为了更向后兼容)
  • 它的语法是什么?

标签: python generator


【解决方案1】:

一个意见:

>>> z = []
>>> g1 = (x for x in range(4))
>>> g2 = (y for y in range(5))
>>> z.extend(g1)
>>> z.extend(g2)
>>> z
[0, 1, 2, 3, 0, 1, 2, 3, 4]
>>> 

【讨论】:

  • 我确实尝试过类似的方法:z = [ x for x in range(4)]+[y for y in range(5)]
猜你喜欢
  • 1970-01-01
  • 2012-12-31
  • 2021-02-06
  • 2016-10-26
  • 2023-03-25
  • 1970-01-01
  • 2020-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多