【问题标题】:Can I turn a generator object into a tuple without using "tuple()"? [duplicate]我可以在不使用“tuple()”的情况下将生成器对象转换为元组吗? [复制]
【发布时间】:2019-01-19 12:26:59
【问题描述】:

可以使用以下代码创建列表:

>>> [i+1 for i in(0,1,2)]
[1, 2, 3]

可以用元组做类似的事情吗?

>>> (i+1 for i in(0,1,2)),
(<generator object <genexpr> at 0x03A53CF0>,)

我本来希望 (1, 2, 3) 作为输出。

我知道你可以使用tuple(i+1 for i in(0,1,2)),但既然你可以使用[i+1 for i in(0,1,2)],我希望使用元组也可以做到类似的事情。

【问题讨论】:

  • 不,没有元组推导。
  • 否;括号实际上不是元组的语法,它是逗号。没有“元组理解”,参见例如stackoverflow.com/q/16940293/3001761.
  • @jonrsharpe 我知道。 &gt;&gt;&gt; 1, 输出 (1,)。不过,我仍然希望有办法做到这一点。

标签: python


【解决方案1】:

在 python 3 中,您可以使用 * 解压缩生成器。

这是一个例子:

>>> *(i+1 for i in (1,2,3)),
(2, 3, 4)

【讨论】:

  • 这是一个很酷的技巧,但不够明确,并且可能没有理解的速度。
  • 一个技巧,可读性差一些。我第一次尝试时错过了最后的,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-07
  • 1970-01-01
  • 2011-08-21
  • 1970-01-01
  • 2016-09-23
  • 2013-06-30
相关资源
最近更新 更多